Java - In eine Datei mit eigener Dateiendung einen Text speichern und auslesen?

6 Antworten

und habe dazu eine eigene Dateiendung entwickelt(.edit).

Die Dateiendung spielt keine Rolle. Deine Datei kann jede Endung haben, so lange die Daten in der Datei in einem Format sind, das deine Anwendung verarbeiten kann.

Ich möchte nun in meine Datei "Test.edit" einen Text aus einer JTextPane speichern und diesen wieder auslesen.

Du solltest hier View und Model voneinander trennen. Es spielt keine Rolle, dass der Text in einem JTextPane steht. Text speicherst Du in Java in einem String (Zeichenkette). Also machen wir uns an dieser Stelle auch keine Gedanken über igrendwelche GUI Elemente.

In Java stehen Dir zwei Möglichkeiten zur Verfügung mit Dateien zu arbeiten:

  1. java.io (Stream orientiert, blocking IO)
  2. java.nio (Buffer orientiert, non-blocking IO)

Da Du wohl noch nicht viel mit Java programmiert hast, empfehle ich Dir java.io. Beim Einlesen der Datei solltest Du noch zwei Sachen beachten: (1) Schließe den Stream, wenn Du diesen nicht mehr brauchst und (2) achte auf das Encoding der Datei. Du kannst das Encoding beim Einlesen zuvor angeben.

Woher ich das weiß: Studium / Ausbildung

Behandle es so, wie eine normale Textdatei. Dazu gibt es viele Tutorials / Artikel.

Habe ich zuerst, doch dann habe ich die Endung geändert und nun funktioniert es nicht mehr.

0
@Anonymer4User

Mir fällt auf, dass du nirgendwo Exception Handling betreibst und beim Auslesen versuchst, den Reader in einen String umzuwandeln und in das TextPane zu setzen:

reader.toString()

Schreiben geht so:

private static void write() {
  File fileToSave = new File("test.edit");
  String path = fileToSave.getAbsolutePath();

  try(FileWriter fileWriter = new FileWriter(path)) {
    fileWriter.write("Some text");
  }
  catch (IOException ex) {
    ex.printStackTrace();
  }
}

Und Lesen so:

private static void read() {
  File file = new File("test.edit");

  if (file.getName().endsWith(".edit")) {
    try (FileReader fileReader = new FileReader(file.getAbsolutePath())) {
      int currentCharacter = fileReader.read();

      while(currentCharacter != -1) {
        System.out.print((char)currentCharacter);
        currentCharacter = fileReader.read();
      }
    }
    catch (FileNotFoundException fileNotFoundException) {
      fileNotFoundException.printStackTrace();
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}
1

Nun ja, dann such getrennt nach beiden Problemen

  • Text aus JTextPane
  • Text in Datei speichern

Was möchtest Du wissen?