|
Dateizugriffe finden in Java über Datenströme (streams) mit Readern und Writern statt . Durch den Einsatz von BufferedWriter werden die zu schreibenden Daten in einem internen Puffer gespeichert. Erst wenn dieser voll ist werden die Daten real in den Stream geschrieben. Das reduziert die Zahl der write-Aufrufe. Vorgehen beim Dateien schreiben:
Datei schreiben mit FileWriter
import java.io.*;
public class Test {
public static void main (String args[]) {
String text = "Hallo";
try {
FileWriter f = new FileWriter ("d:/test/test.txt");
f.write(text);
f.close();
}
catch (IOException e) {
System.out.println("Fehler: "+e.toString());
}
}
}
Datei schreiben mit BufferedWriter
import java.io.*;
public class Test {
public static void main (String args[]) {
String s = "";
try {
BufferedWriter b = new BufferedWriter (new FileWriter ("d:/test/test.txt"));
for (int i = 1; i <= 10; ++i) {
s = "Dies ist Zeile "+i;
b.write(s);
b.newLine();
}
b.close();
}
catch (IOException e) {
System.out.println("Fehler: "+e.toString());
}
}
}
Datei schreiben mit PrintWriter
import java.io.*;
public class Test {
public static void main (String args[]) {
String s = "";
try {
PrintWriter p = new PrintWriter (new FileWriter("d:/test/test.txt"));
for (int i = 1; i <= 5; ++i) {
s = "Dies ist Zeile "+i;
p.println(s);
}
p.close();
}
catch (IOException e) {
System.out.println("Fehler: "+e.toString());
}
}
}
/***** Dateiinfos und Dateimanipulationen *****/
import java.io.*;
public class Test {
public static void main (String args[]) {
File f = new File("d:/test/test.txt");
File f2 = new File("d:/test/xxx.txt");
if (f.exists() && !f.isDirectory()) {
System.out.println("Datei "+f.getName()+" gefunden");
System.out.println("Datei ist lesbar? "+f.canRead());
System.out.println("Datei ist beschreibbar? "+f.canWrite());
System.out.println("Dateigröße in Bytes? "+f.length());
f.renameTo(f2); // Datei umbenennen (test.txt gibt es dann nicht mehr)
f2.delete(); // Datei löschen (xxx.txt löschen)
}
else {
System.out.println("Datei "+f.getName()+" nicht gefunden");
}
}
}
/* Zahlen aus einer Datei lesen, hochzählen und zurückschreiben.
Zuerst Datei zeilenweise lesen und in einem Vektor speichern.
Dann die gelesenen Zeilen=Zahlen aus dem Vektor lesen und um 1 erhöhen
und zeilenweise in Datei schreiben.
*/
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
File file = new File("d:/test/test.txt"); // Datei mit z.B. 3 Zeilen, gefüllt mit 1, 2, 3
Vector v = new Vector(); // Vektor zum Speichern der gelesenen Zeilen
String vElem = "";
int i=0;
if (dateiGefunden(file)) {
try {
BufferedReader einDatei = new BufferedReader(new FileReader(file)); // Reader nutzen
String einZeile = "";
while ((einZeile = einDatei.readLine()) != null) {
System.out.println("Gelesen: "+einZeile);
v.addElement(einZeile); // Zeile als Object in Vektor schreiben
}
einDatei.close();
PrintWriter ausDatei = new PrintWriter (new FileWriter (file)); // Zeilenweise schreiben
for (Enumeration elem=v.elements(); elem.hasMoreElements(); ) {
vElem=(String)elem.nextElement(); // Vektorobjekt in String wandeln
i=Integer.parseInt(vElem)+1; // String in int wandeln und hochzählen
ausDatei.println(i); // int zeilenweise in Datei schreiben
System.out.println("Geschrieben: "+i);
}
ausDatei.close();
}
catch (IOException e) {
System.out.println("Fehler: "+e.toString());
}
}
}
private static boolean dateiGefunden(File file) {
boolean gefunden=false;
if (file.exists() && !file.isDirectory()) { // prüfen, ob Datei vorhanden
System.out.println("Datei '"+file.getName()+"' gefunden");
gefunden=true;
}
else {
System.out.println("Datei '"+file.getName()+"' nicht gefunden");
}
return gefunden;
}
}
|