我有一个方法应该用新内容覆盖当前文件,但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 --|
答案 0 :(得分:0)
我知道这是一个老问题,但最近我遇到了同样的问题。您需要清除包含输出数据的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);