FileWriter() 只会追加,不会覆盖
Posted
技术标签:
【中文标题】FileWriter() 只会追加,不会覆盖【英文标题】:FileWriter() will only append, not overwrite 【发布时间】:2015-08-24 16:38:22 【问题描述】:我有一个方法应该用新内容覆盖当前文件,但是 FileWriter() 只是附加新内容,而不是覆盖旧内容。
这就是我的 FileWriter 的设置方式
File file = new File(test.txt);
BufferedWriter out;
out = new BufferedWriter(new FileWriter(file, false));
这里是保存方法
//stuff is defined earlier and filled with the new content for the file
ArrayList<String> stuff = new ArrayList<>();
//The actual save() method
Object[] lines = stuff.toArray();
for (Object item : lines)
out.write(item.toString());
out.newLine();
out.flush();
问题发生在我运行此方法时,它不会覆盖文件,而是将新内容附加到文件中。
我想要什么:
line 1
line 2
line 3 <--------- This is added when the file is overwritten
会发生什么:
line 1
line 2
line 1 --|
line 2 |------ This was all re-appended to the original 1st 2 lines
line 3 --|
【问题讨论】:
为什么在 2015 年使用任何东西File
?为什么不使用 Files.newBufferedWriter()
和选项 StandardOpenOption.TRUNCATE_EXISTING,APPEND
?
当我们在做的时候,你可能想看看the whole nio
package
愚蠢的问题,但你有没有关闭过FileWriter
?未关闭的流会导致各种集市行为。
Why use anything File in 2015?
还在工作的时候为什么不呢。
【参考方案1】:
我知道这是一个老问题,但我最近遇到了同样的问题。您需要清除包含输出数据的 ArrayList,否则新数据将简单地附加到旧数据。我使用 StringBuilder:
StringBuilder moduleData = new StringBuilder();
moduleData.append("--target_perm_group_size\t").append(targetGroupSize).append("\n");
moduleData.append("--prog_check\t").append(progCheck).append("\n");
FileSaveUtility.fileSaveWindow(moduleData.toString());
moduleData.setLength(0);
【讨论】:
以上是关于FileWriter() 只会追加,不会覆盖的主要内容,如果未能解决你的问题,请参考以下文章