Приводит ли создание объекта InputStream в Java к записи в файл?

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

Ответ

Нет. InputStream и его подклассы (например, FileInputStream) предназначены исключительно для чтения данных из источника (файла, массива байт, сетевого соединения). Они не выполняют и не инициируют запись.

Для записи используются классы OutputStream:

// 1. Только чтение — запись НЕ происходит
InputStream in = new FileInputStream("input.txt");
int data = in.read();

// 2. Запись требует явного использования OutputStream
OutputStream out = new FileOutputStream("output.txt");
out.write(data); // Запись происходит здесь
out.close();

Ключевое различие:

  • InputStream — абстракция входного потока (источник данных).
  • OutputStream — абстракция выходного потока (приёмник данных).

Создание FileOutputStream с флагом append может создать файл, если его нет, но данные запишутся только после вызова write().