Sobes.tech
Junior
224

Mi a különbség és mi a közös az InputStream, OutputStream, Reader és Writer között?

Válasz az MI-től

sobes.tech MI

Общее:

  • Все являются абстрактными базовыми классами для работы с данными в 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();
}