Frage

Ich habe eine Arraylist (result_arraylist) und die Verwendung der GSON-Bibliothek zum Konvertieren von Java-Objekten in JSON und zum anschließenden Drucken in einer Textdatei.Hier ist mein Code:

Gson gson = new Gson();
File file = new File(file_path);
FileWriter fWriter;
BufferedWriter bWriter;

try {
     //create the file if it doesn't exist
     if((!file.exists())) {
         file.createNewFile();
     }
     fWriter = new FileWriter(file.getAbsoluteFile());
     bWriter = new BufferedWriter(fWriter);
     for(int j = 0; j < result_arraylist.size(); ++j) {
         bWriter.write("<!--"); //this and the last string I write to the file is just to separate the objects for when I read the file again
             bWriter.newLine();
         bWriter.write(gson.toJson(result_arraylist.get(j))); //take the object at index j, convert it to JSON and write to file
             bWriter.newLine();
         bWriter.write("-->"); //seperator to denote end of object
             bWriter.newLine();
             bWriter.newLine();
     }
}
catch(IOException e) {e.printStackTrace();}

Was ich hier nicht gezeigt habe, ist, dass dies in einem größeren verschachtelt ist for loop das füllt result_arraylist mit unterschiedlichen Objekten bei jeder Iteration.Mein Problem ist das bei jeder Iteration des Hauptteils for loop, die Datei wird ständig überschrieben.

War es hilfreich?

Lösung

Öffne das File im Anhängemodus durch Übergabe von true an FileWriter(String fileName, boolean append) Konstruktor, damit der vorhandene Inhalt nicht überschrieben wird.

Konstruiert ein FileWriter-Objekt mit einem Dateinamen und einem booleschen Wert, der angibt, ob die geschriebenen Daten angehängt werden sollen oder nicht.

  fWriter = new FileWriter(file.getAbsoluteFile(), true);

Andere Tipps

Da sich dies in einer größeren für Schleife befindet, jedes Mal, wenn Sie diesen Codeabschnitt ausführen, öffnen Sie die Datei erneut.Wiedereröffnung einer Datei standardmäßig, um es zu überschreiben.

Es wäre wahrscheinlich besser, die Datei einmal außerhalb der äußeren Schleife zu öffnen, und Sie vermeiden dieses Problem.

Wenn Sie die Datei mehrmals öffnen möchten, wie Sie dies tun, verwenden Sie das Anhängen-Flag als Suresh gesagt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top