转换流:
InputStreamReader:字节到字符的桥梁,解码。
OutputStreamWriter:字符到字节的桥梁,编码。
流的操作规律:
1.明确源和目的(汇)
源: InputStream Reader
目的: OutputStream Writer
2.明确数据是否是纯文本数据
源:是-纯文本:Reader
否-InputStream
目的: 是 -纯文本 Writer
否- OutputStream
3.明确具体的设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4.是否需要其他额外功能
1.是否需要高效(缓冲区):
是:加入Buffer
2.转换
InputStreamReader ir = new InputStreamReader(System.in);
OutputStreamWriter ow = new OutputStreamReader(System.out):
--字节流转字符流
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt") , "GBK");
FileWriter fw = new FileWriter("gbk.txt");
这两句代码的功能是等同的。
FileWriter : 其实就是转换流指定了本机默认码表的体现,而且这个转换流的子类对象,可以方便操作文本文件。
简单说:操作文件的资字节流 + 本机默认的编码表
如果操作文本文件需要明确具体的编码,FileWriter就不能使用,必须用转换流。
同理:
InputStreamReader isr = new InputStreamReader(new FileInputStream("utf.txt") , "utf-8");
转换流的使用:
1.源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁。
2.一旦操作文本涉及到具体的指定编码表时,必须使用转换流。