Link zu www.kneller-gifs.de

Dateien schreiben

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:

  • Output Stream anlegen (Datei öffnen) z.B. mit
    - FileWriter f=new FileWriter ("datei.txt"); oder besser:
    - BufferedWriter b=new BufferedWriter (new FileReader("datei.txt")); oder komfortabler:
    - PrintWriter p = new PrintWriter(new FileWriter("datei.txt"));
  • Ein Zeichen schreiben mit p.write(int)
  • Datei schliessen mit p.close
  • Es wird immer ein IOExceptionHandling mittels try-catch benötigt.

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;
  }
}