一、转换流
1、转换流概念
转换流提供了字节流和字符流之间的转换。
2、Java 中的转换流
Java API 提供了两个转换流:
InputStreamReader:将InputStream转换为Reader
OutputStreamWriter:将Writer转换为OutputStream
InputStreamReader:将一个字节的输入流转换为字符的输入流
OutputStreamWriter:将一个字符的输出流转换为字节的输出流
3、转换流好处
作用:提供字节流与字符流之间的转换
字节流中的数据都是字符时,转成字符流操作更高效。
很多时候我们使用转换流来处理文件乱码问题,实现编码和解码的功能。
二、不同编码引发的问题
当我们使用 UTF-8 编码保存文件时,用 UTF-8 再次读取不会出现任何问题。但是,当使用其他的编码(如GBK)读取文件时,就会出现乱码现象。
Demo:
1 public class ReaderDemo {
2 public static void main(String[] args) throws IOException {
3 FileReader fileReader = new FileReader("E:\\File_GBK.txt");
4 int read;
5 while ((read = fileReader.read()) != ‐1) {
6 System.out.print((char)read);
7 }
8 fileReader.close();
9 }
10 }
11 输出结果:
12 ���
三、转换流理解图解
转换流是字节与字符间的桥梁!
转换流的原理:
四、字符编码
编码:字符串 —>字节数组
解码:字节数组—> 字符串
转换流的编码应用
(1)可以将字符按指定编码格式存储;
(2)可以对文本数据按指定编码格式来解读;
(3)指定编码表的动作由构造器完成。
五、计算机字符编码