Apache FileUtils.writeLines () vorgenommen werden können, in eine Datei anhängen, falls vorhanden

StackOverflow https://stackoverflow.com/questions/1629713

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?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top