ArrayList wird nicht komplett gespeichert

kodela

Bekanntes Mitglied
Hallo,

ich habe eine Liste mit 761 Textzeilen ohne Leerstellen und Sonderzeichen. Die Länge der Zeilen ist unterschiedlich, ein Teil hat 162, der andere 243 Zeichen. Diese Liste importiere ich, bearbeite jede Zeile und bringe sie auf eine einheitliche Länge von 81 Zeichen. So bearbeitet wird jede Zeile in die Liste aufgenommen. Dies funktioniert alles einwandfrei. Die Liste ist vollkommen und fehlerfrei. Sie ist die Basis für eine weitere Bearbeitung, soll aber zuvor gespeichert werden. Dafür habe ich folgenden Code geschrieben:

Java:
private void speichernListe() {
      // gewandelte Liste speichern
      PrintWriter printWriter;
      String fileName = userDir + File.separator + "ex_mod.txt";
      File file = new File(fileName);
      try {
         printWriter = new PrintWriter(new FileWriter(file));
         Iterator iter = extListe.iterator();
         while (iter.hasNext()) {
            Object o = iter.next();
            printWriter.println(o);
         }
      } catch (IOException ex) {

      }
   }

Auch dieser Speichervorgang funktioniert korrekt, jedoch nur bis zur Zeile 690, für die Zeile 691 fehlen die letzten sieben Zeichen, der Rest fehlt ganz.

Ich habe keine Erklärung, was für dieses Problem ursächlich sein könnte.
 
Du musst am Ende die Methode flush() von PrintWriter aufrufen. Weiterhin schließt du den PrintWriter nie, er kann also die Datei nicht abschließen. Das Schließen würde flush() automatisch durchführen. Dein Vorgehen ist veraltet und naiv * sorry mir fällt keine bessere Beschreibung ein.
s. hier: https://www.baeldung.com/java-try-with-resources

Java:
    public static void writeListToFile(final List<String> list, final String fileName) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) {
            for (final String line : list) {
                writer.write(line);
                writer.newLine();
            }
        } catch (final IOException e) {
            e.printStackTrace();
        }
    }
 
Zuletzt bearbeitet:

Zurück
Oben