Как дописать данные в конец файла с помощью FileOutputStream в Java?

«Как дописать данные в конец файла с помощью FileOutputStream в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

По умолчанию 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 является базовым классом для работы с бинарными данными.