Ответ
По умолчанию FileOutputStream перезаписывает файл. Чтобы дописывать (append) данные в конец, необходимо использовать конструктор с параметром boolean append, установленным в true.
Синтаксис и пример:
// Конструктор для дописывания: FileOutputStream(String name, boolean append)
try (FileOutputStream fos = new FileOutputStream("logs.txt", true)) {
String newLogEntry = "n[INFO] New event occurred.";
fos.write(newLogEntry.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
Важные детали:
FileOutputStream("file.txt")илиFileOutputStream("file.txt", false)— файл будет перезаписан с нуля.FileOutputStream("file.txt", true)— данные будут добавлены в конец существующего файла. Если файла нет, он будет создан.- Всегда используйте try-with-resources (как в примере) для гарантированного закрытия потока и предотвращения утечек ресурсов.
- Для записи текста предпочтительнее использовать
FileWriterилиBufferedWriter, ноFileOutputStreamявляется базовым классом для работы с бинарными данными.