English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы изучим Java OutputStreamWriter и его методы с помощью примеров.
Класс OutputStreamWriter пакета java.io может использоваться для преобразования данных в виде символов в данные в виде байтов.
Он наследует абстрактный класс Writer.
Класс OutputStreamWriter можно использовать вместе с другими потоками вывода. Он также известен как мост между потоками вывода и ввода символов. Это потому, что OutputStreamWriter преобразует символы в байты.
Например,某些字符需要2个字节存储在存储器中。Чтобы записать такие данные, мы можем использовать поток вывода, который преобразует символы в соответствующие байты и хранит их вместе.
Чтобы создать OutputStreamWriter, нам нужно сначала импортировать пакет java.io.OutputStreamWriter. После импорта пакета мы можем создать поток вывода.
//Создание OutputStream FileOutputStream file = new FileOutputStream(String path); //创建一个OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file);
В данном примере мы создали OutputStreamWriter с именем output и FileOutputStream с именем файла.
Здесь мы используем defaultManager encoding для записи символов в поток вывода.
Но мы можем указать тип кодировки символов, используемый для записи данных (UTF8илиUTF16)。
//Создание OutputStreamWriter с указанием кодировки символов OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Здесь мы используем класс Charset для указания типа кодировки символов.
Класс OutputStreamWriter предоставляет реализации различных методов из класса Writer.
write() -写入一个字符
write(char[] array) - записывает указанные символы из массива в写入器
write(String data) - записывает указанную строку в写入器
import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class Main { public static void main(String args[]) { String data = "This is a line of text inside the file."; try { // 创建 FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); //创建一个OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file); //записать строку в файл output.write(data); //закрыть writer output.close(); } catch (Exception e) { e.getStackTrace(); } } }
В предыдущем примере мы использовали файловый поток для создания потокового чтителя. Потоковый чтитель иoutput.txtСсылка на файл.
FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file);
Чтобы записать данные в файл, мы используем метод write().
Здесь, когда мы запускаем программу,output.txtФайл будет заполнен следующим содержимым.
This is a line of text inside the file.
getEncoding() метод может быть использован для получения типа кодировки, используемой для записи данных в поток вывода. Например,
import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.io.FileOutputStream; class Main { public static void main(String[] args) { try { // 创建一个输出流 FileOutputStream file = new FileOutputStream("output.txt"); // 创建具有默认编码的输出流阅读器 OutputStreamWriter output1 = new OutputStreamWriter(file); // 创建指定编码的输出流阅读器 OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8")); // 返回输出流的字符编码 System.out.println("output1的字符编码: " + output1.getEncoding()); System.out.println("output2的字符编码: " + output2.getEncoding()); // 关闭 reader output1.close(); output2.close(); } catch(Exception e) { e.getStackTrace(); } } }
Результат вывода
Кодировка символов output1: Cp1252 Кодировка символов output2: UTF8
В примере выше мы создали 2 потока writer, названные output1 и output2.
output1 не указать кодировку символов. Поэтому метод getEncoding() возвращает стандартную кодировку символов.
output2 указать кодировку символовUTF8. Поэтому метод getEncoding() возвращает указанную кодировку символов.
Внимание: Мы уже использовали метод Charset.forName() для указания типа кодировки символов.
Чтобы закрыть поток writer, мы можем использовать метод close(). После вызова метода close() данные writer больше не могут быть записаны.
Метод | Описание |
---|---|
flush() | Принудительно записать все данные, находящиеся в writer, в соответствующее место назначения |
append() | Вставить указанный символ в текущий writer |