Назад к вопросам
Junior
87
questionbank

В чем отличие и что общего у InputStream, OutputStream, Reader и Writer?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Общее:

  • Все являются абстрактными базовыми классами для работы с данными в Java I/O.
  • Представляют собой потоки данных.
  • InputStream и Reader используются для чтения данных, OutputStream и Writer для записи.

Отличия:

Характеристика InputStream OutputStream Reader Writer
Тип данных Байты (8-битные) Байты (8-битные) Символы (16-битные Unicode) Символы (16-битные Unicode)
Назначение Чтение двоичных данных Запись двоичных данных Чтение текстовых данных Запись текстовых данных
Кодировка Не учитывается Не учитывается Учитывается (по умолчанию или заданная) Учитывается (по умолчанию или заданная)

Примеры использования:

// InputStream для чтения байтов из файла
try (InputStream is = new FileInputStream("binary.dat")) {
    int byteRead;
    while ((byteRead = is.read()) != -1) {
        // process byteRead
    }
} catch (IOException e) {
    e.printStackTrace();
}
// OutputStream для записи байтов в файл
try (OutputStream os = new FileOutputStream("binary_out.dat")) {
    byte[] data = {1, 2, 3};
    os.write(data);
} catch (IOException e) {
    e.printStackTrace();
}
// Reader для чтения символов из файла
try (Reader reader = new FileReader("text.txt")) {
    int charRead;
    while ((charRead = reader.read()) != -1) {
        // process charRead
    }
} catch (IOException e) {
    e.printStackTrace();
}
// Writer для записи символов в файл
try (Writer writer = new FileWriter("text_out.txt")) {
    writer.write("Hello, world!");
} catch (IOException e) {
    e.printStackTrace();
}