6

コモンズの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を検索しましたが、何も見つかりませんでした。私は何が欠けていますか?

4

5 に答える 5

7

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

于 2009-10-27T09:54:17.143 に答える
5

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

ただし、FileUtils.openOutputStream(...)から出力ストリームを取得し、を使用して書き込むことができます。

write(byte[] b, int off, int len) 

オフを計算して、ファイルに追加することができます。

編集

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

BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);
于 2009-10-27T09:53:48.517 に答える
2

Apache FileUtils 2.1 の時点で、次のメソッドがあります。

static void write(ファイル file, CharSequence data, boolean append)

于 2011-12-27T20:11:25.013 に答える
1

追加するかどうかのパラメータを取る 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、ブール値)

于 2016-02-02T04:10:14.630 に答える
0

あなたは次のようなことをすることができます

List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);
于 2011-02-25T17:16:10.083 に答える