共计 1967 个字符,预计需要花费 5 分钟才能阅读完成。
package com.itheima.demo03.ReverseStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
/*
java.io.OutputStreamWriter extends Writer
OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。(编码: 把能看懂的变成看不懂)
继续自父类的共性成员方法:
- void write(int c) 写入单个字符。- void write(char[] cbuf) 写入字符数组。- abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off 数组的开始索引,len 写的字符个数。- void write(String str) 写入字符串。- void write(String str, int off, int len) 写入字符串的某一部分,off 字符串的开始索引,len 写的字符个数。- void flush() 刷新该流的缓冲。- void close() 关闭此流,但要先刷新它。构造方法:
OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。参数:
OutputStream out: 字节输出流, 可以用来写转换之后的字节到文件中
String charsetName: 指定的编码表名称, 不区分大小写, 可以是 utf-8/UTF-8,gbk/GBK,... 不指定默认使用 UTF-8
使用步骤:
1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
4. 释放资源
*/
public class Demo02OutputStreamWriter {
public static void main(String[] args) throws IOException {//write_utf_8();
write_gbk();}
/*
使用转换流 OutputStreamWriter 写 GBK 格式的文件
*/
private static void write_gbk() throws IOException {
//1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\gbk.txt"),"GBK");
//2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
osw.write("你好");
//3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
osw.flush();
//4. 释放资源
osw.close();}
/*
使用转换流 OutputStreamWriter 写 UTF- 8 格式的文件
*/
private static void write_utf_8() throws IOException {
//1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\utf_8.txt"),"utf-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\utf_8.txt"));// 不指定默认使用 UTF-8
//2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
osw.write("你好");
//3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
osw.flush();
//4. 释放资源
osw.close();}
}
正文完
发表至: java
2019-08-17