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

Эти классы учитывают кодировку символов, что важно при работе с текстовыми данными в разных языках.