首先更正一下错误:Java里暂时没有提供字符转字节的转换流。
如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件
1. 比如:当我们使用默认的GBK编码输出时,下面的代码其实是一样的。
new OutputStreamWriter(new FileoutputStream("demo.txt"));
与new FileWriter("demo.txt");
但当,我们要使用UTF-8等其它编码时,new FileWriter("demo.txt");不行,因为它默认是GBK。
正确方式应该是:new OutputStreamWriter(new FileoutputStream("demo.txt"),"utf-8");
此时我们如果要读取这个UTF-8的文件,也要同样的要用:
new InputStreamReader(new InputStreamReader("demo.txt"),"UTF-8");
而不能用,new FileReader("demo.txt");其原理一样。
2.当文件是字节文件时:
读取:提高效率用BufferedReader的独有快速方法时,需要转换。
输出:提高效率一般用BufferedWriter缓存,需要转换。
说得不是很具体,但希望能给你带来一些帮助, |