Назад к вопросам
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();
}