У меня есть метод, который должен перезаписать текущий файл новым контентом, однако FileWriter() добавляет только новый контент, а не перезаписывает старый контент.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 году? Почему бы вам не использовать 'Files.newBufferedWriter()' с параметрами 'StandardOpenOption. {TRUNCATE_EXISTING, APPEND}'? – fge
И пока мы на нем, вы можете взглянуть на [весь пакет 'nio'] (https://docs.oracle.com/javase/tutorial/essential/io/fileio.html) – Turing85
Dumb вопрос, но закрываете ли вы 'FileWriter'? Незакрытые потоки вызывают все виды поведения на базаре. – initramfs