6

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,但什么也没找到!我错过了什么?

4

5 回答 5

7

您可以使用IOUtils.writeLines(),它接收一个 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 开始,您有以下方法:

静态无效写入(文件文件,CharSequence 数据,布尔附加)

于 2011-12-27T20:11:25.013 回答
1

FileUtils.writelines() 有一个重载,它接受是否附加的参数。

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

file - 要写入的文件

行 - 要写入的行,空条目产生空行

append - 如果为真,那么这些行将被添加到文件的末尾而不是覆盖

情况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

第二次调用将附加到同一个文件。

从 java 官方文档中查看更多详细信息。 https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines(java.io.File , java.util.Collection, boolean)

于 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 回答