РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
868 of 1163 menu

Класс OutputStreamWriter

Класс OutputStreamWriter является мостом между потоком символов и потоком байтов. Он наследуется от класса Writer и преобразует записываемые символы в байты с помощью указанной кодировки. В первый параметр конструктора мы передаем объект OutputStream, в который будут записываться байты, во второй параметр - кодировку (объект Charset или её имя в виде строки). Если кодировка не указана, используется кодировка по умолчанию.

Синтаксис

new OutputStreamWriter(OutputStream out) new OutputStreamWriter(OutputStream out, Charset cs) new OutputStreamWriter(OutputStream out, String charsetName)

Пример

Давайте запишем строку в файл, преобразовав символы в байты с помощью кодировки UTF-8:

import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) { try (Writer writer = new OutputStreamWriter( new FileOutputStream("test.txt"), StandardCharsets.UTF_8)) { writer.write("abcde"); writer.flush(); System.out.println("done"); } catch (Exception e) { System.out.println(e.getMessage()); } } }

Результат выполнения кода:

"done"

Пример

Давайте укажем кодировку в виде строки "ISO-8859-1" и запишем несколько символов:

import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; public class Main { public static void main(String[] args) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer writer = new OutputStreamWriter(out, "ISO-8859-1"); writer.write("12345"); writer.flush(); String res = out.toString("ISO-8859-1"); System.out.println(res); } catch (Exception e) { System.out.println(e.getMessage()); } } }

Результат выполнения кода:

"12345"

Пример

Давайте обернем OutputStreamWriter в BufferedWriter для буферизованной записи и выведем результат в консоль:

import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) { try (Writer writer = new BufferedWriter( new OutputStreamWriter(System.out, StandardCharsets.UTF_8))) { writer.write("abcde"); writer.newLine(); writer.flush(); } catch (Exception e) { System.out.println(e.getMessage()); } } }

Результат выполнения кода:

"abcde"

Смотрите также

  • класс InputStreamReader,
    который преобразует поток байтов в поток символов
  • класс OutputStream,
    который представляет поток вывода байтов
  • класс Writer,
    который представляет поток вывода символов
  • метод write,
    который записывает символы в поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить