可以将apache FileUtils.writeLines()附加到文件(如果存在)
公共文件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() ,它接收一个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
第二个调用将附加到同一个文件。
有关更多详细信息,请参阅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);
- Apache commons fileupload“Streaming API”
- 用于压缩(例如LZW)字符串的Java库
- 如何使用apache commons配置(java)加载xml文件?
- Apache事务:事务性写入文件 – 如何使用resourceId
- 为什么我用Apache Commons FileUpload获得“FileUploadException:Stream意外结束”?
- StringEscapeUtils查明字符串是否被转义
- 加速Apache Commons FTPClient传输
- Apache Commons CLI选项解析器可以忽略未知的命令行选项吗?
- 用Java确定另一个国家的互联网时间