Kleines Nachschlagewerk Informatik
Lesen und Schreiben in Dateien
Worum geht es?
Sollen Daten nach dem Beenden des Programms erhalten bleiben, müssen sie gespeichert werden. Hierzu gibt es verschiedene Möglichkeiten, allerdings soll nur das Schreiben von Textdateien erläutert werden. Erstens lassen sich damit 90% aller Aufgaben der Schulinformatik bearbeiten und zweitens kann man das Ergebnis im Texteditor ansehen und prüfen.
Java-Dateiarbeit
In Java ist das Ausgeben von Daten getrennt. Es gibt Objekte, die sich um das spezielle Medium (Datei auf Festplatte, Netzwerk,...) kümmern und es gibt Objekte, die sich nur darum kümmern, wie geschrieben wird (sofort, gepuffert, ...).

Da bei Dateiarbeit etwas schief gehen kann, müssen die Operationen immer in try-catch-Blöcke gekapselt werden.
Schreiben in eine Datei
Zum Schreiben in eine Datei muss ein Fileobjekt angelegt werden. Anschließend versucht ein FileWriter Schreibzugriff zu bekommen und der BufferedWriter weiß, wie die Daten ausgegeben werden. Nach dem Schreiben muss die Datei geschlossen werden. Damit gibt man sie für andere Programme frei.

      try
      {
          File datei = new File("testdatei.txt");
          FileWriter fWriter = new FileWriter(datei);
          BufferedWriter bWriter = new BufferedWriter(fWriter);
          bWriter.write("Das steht in der ersten Zeile\n");
          bWriter.write("Und das steht in der zweiten Zeile\n");
          bWriter.close();
      }
      catch (Exception e)
      {
          JOptionPane.showMessageDialog(null, e.getMessage());
      }
            
Lesen aus einer Datei
Analog werden ein FileReader und ein BufferedReader erzeugt. Solange Text in der Datei ist, readLine also eine Zeichenkette liefert, wird sie über die Konsole ausgegeben.

      try
      {
          File datei = new File("testdatei.txt");
          FileReader fReader = new FileReader(datei);
          BufferedReader bReader = new BufferedReader(fReader);
          String zeile = null;
          while (null != (zeile = bReader.readLine())
          {
              System.out.println(zeile);
          }
          bReader.close();
      }
      catch (Exception e)
      {
          JOptionPane.showMessageDialog(null, e.getMessage());
      }