Apache FileUtils.writeLines()が存在する場合、ファイルに追加することができます

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

質問

The commons FileUtils とてもクールに見えますが、ファイルに追加できないとは信じられません。

File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));

上記はファイルの内容を毎回置き換えるだけであり、このコードのように終了するようにタグ付けを続けたいと思います。

fw = new FileWriter(file, true);
try{
    for(String line : printStats(new DateTime(), headerRequired)){
        fw.write(line + "\n");
    }
}
finally{ 
    fw.close();
}

javadocを検索しましたが、何も見つかりませんでした!何が足りないのですか?

役に立ちましたか?

解決

IOUtils.writeLines()、2番目の例のように初期化できるWriterオブジェクトを受け取ります。

他のヒント

それらは、FileUtilsクラスのappendString(...)のようなメソッドになりました。

しかし、 FileUtils.openOutputStream(...)からOutputstreamを取得し、

を使用して書き込むことができます
write(byte[] b, int off, int len) 

オフにすることで、ファイルに追加することができます。

編集

Davidsの回答を読んだ後、BufferedWriterがこの仕事をすることを認識しました

BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);

Apache FileUtils 2.1以降、次のメソッドがあります:

static void write(ファイルファイル、CharSequenceデータ、ブール値の追加)

FileUtils.writelines()にはオーバーロードがあり、追加するかどうかのパラメーターを受け取ります。

public static void writeLines(File file,
          Collection<?> lines,
          boolean append)
                   throws IOException

file-書き込むファイル

lines-書き込む行、nullエントリは空白行を生成します

append-trueの場合、上書きせずにファイルの最後に行が追加されます

ケース1:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2");

file_to_writeには以下のみが含まれます

line 2

最初に同じファイルに複数回書き込むと、ファイルが上書きされます。

ケース2:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2", true);

file_to_writeには次が含まれます

line 1
line 2

2回目の呼び出しで同じファイルに追加されます。

詳細については、Java公式ドキュメントを参照してください。 https ://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines(java.io.File 、java.util.Collection、boolean)

次のようなことができます

List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top