Apache FileUtils.writeLines () vorgenommen werden können, in eine Datei anhängen, falls vorhanden
-
06-07-2019 - |
Frage
Die commons FileUtils ziemlich cool aussehen, und ich kann nicht glauben, dass sie nicht gemacht werden kann, um eine Datei anzuhängen.
File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));
Die oben gezeigt ersetzt nur die Inhalte der Datei jedes Mal, und ich würde nur zu halten, wie dieses Zeug Tagging funktioniert genauso wie dieser Code zu beenden.
fw = new FileWriter(file, true);
try{
for(String line : printStats(new DateTime(), headerRequired)){
fw.write(line + "\n");
}
}
finally{
fw.close();
}
Ich suche habe die javadoc aber nichts gefunden! Was bin ich?
Lösung
Sie können mit IOUtils.writeLines () , es erhält ein Writer-Objekt, das Sie wie in Ihrem zweiten Beispiel initialisieren.
Andere Tipps
Sie ist nun Verfahren wie appendString (...) in der FileUtils Klasse.
Aber Sie können den Output von FileUtils.openOutputStream (...) erhalten und als es schreiben, indem Sie
write(byte[] b, int off, int len)
Sie können die aus calculte, so dass Sie auf die Datei apend wird.
Bearbeiten
Nach dem Lesen Davids Antwort, die ich erkannt, dass die BufferedWriter diese Arbeit für Sie tun
BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);
Wie der Apache FileUtils 2.1 Sie haben diese Methode:
static void write (Datei-Datei, CharSequence Daten, boolean append)
Es gibt eine Überlastung für FileUtils.writelines (), die auf Parameter übernimmt, ob anhängen.
public static void writeLines(File file,
Collection<?> lines,
boolean append)
throws IOException
Datei - die Datei zu schreiben, um
Linien - die Zeilen zu schreiben, null Einträge erzeugen Leerzeilen
append - wenn sie wahr ist, dann werden die Zeilen am Ende der Datei hinzugefügt werden, anstatt zu überschreiben
Case1:
FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2");
file_to_write enthält nur
line 2
Als erstes Schreiben in die gleiche Datei mehrmals die Datei überschrieben werden soll.
Case2:
FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2", true);
file_to_write enthalten
line 1
line 2
Der zweite Aufruf an die gleiche Datei anhängen wird.
Überprüfen Sie diese von Java offizielle Dokumentation für weitere Details. https : //commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines (java.io.File , java.util.Collection, boolean)
Sie etwas tun könnten, wie
List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);