转换流
# 概述
转换流术语字符流。
作用:转换流提供了在字节流和字符流之间的转换。
Java API提供了两个转换流:
- InputStreamReader:将InputStream转换为Reader
- OutputStreamWriter:将Writer转换为OutputStream
有时候,字节流中的数据都是字符时,转成字符流操作更高效。
应用场景:很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。
# InputStreamReader
实现将字节的输入流按指定字符集转换为字符的输入流。
需要和InputStream“套接”。
(将字节转换为字符,称为解码)
# 构造器
public InputStreamReader(InputStream in)
public InputSreamReader(InputStream in,String charsetName)
例如:
Reader isr= new InputStreamReader(System.in,”gbk”);//指定字符集
1
具体适用哪个字符集,取决于文件,如果不指定字符集,将会使用编译器默认的字符集。
# OutputStreamWriter
实现将字符的输出流按指定字符集转换为字节的输出流。
需要和OutputStream“套接”。
(将字符抓换为字节,称为编码)
# 构造器
public OutputStreamWriter(OutputStream out)
public OutputSreamWriter(OutputStream out,String charsetName)
# Demo
@Test
void test01() throws IOException {
FileInputStream fis = new FileInputStream("dbcp.txt");
FileOutputStream fos = new FileOutputStream("dbcp5.txt");
InputStreamReader isr = new InputStreamReader(fis, "GBK");
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(osw);
String str = null;
while ((str = br.readLine()) != null) {
bw.write(str);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
帮我改善此页面 (opens new window)
上次更新: 2021/01/09, 11:11:31