У меня есть метод, который должен перезаписывать текущий файл новым содержимым, однако 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 --|
File
в 2015 году? Почему бы вам не использоватьFiles.newBufferedWriter()
с опциямиStandardOpenOption.{TRUNCATE_EXISTING,APPEND}
? - person fge   schedule 09.06.2015nio
пакет - person Turing85   schedule 09.06.2015FileWriter
? Незакрытые потоки вызывают разного рода базарное поведение. - person initramfs   schedule 09.06.2015Why use anything File in 2015?
Почему бы и нет, если он все еще работает. - person Antoniossss   schedule 09.06.2015