Назад к вопросам
Junior
69
questionbank
Какие классы позволяют преобразовывать байтовые потоки в символьные и обратно?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для этого используются классы-мосты (Bridge Streams):
InputStreamReader: Преобразует поток байтов (InputStream) в поток символов. При создании указывается кодировка.OutputStreamWriter: Преобразует поток символов (Writer, напримерPrintWriter) в поток байтов (OutputStream). Также требует указания кодировки.
Пример использования:
// Преобразование байтового потока в символьный
try (FileInputStream fis = new FileInputStream("input.txt");
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8)) {
int data;
while ((data = isr.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
// Преобразование символьного потока в байтовый
try (FileOutputStream fos = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) {
osw.write("Пример текста для записи");
} catch (IOException e) {
e.printStackTrace();
}
Эти классы учитывают кодировку символов, что важно при работе с текстовыми данными в разных языках.