黑马程序员技术交流社区

标题: 关于转换流 [打印本页]

作者: tangliping    时间: 2014-6-30 01:36
标题: 关于转换流
说说字节流和字符流的联系和区别,什么情况下应该使用转换流
作者: 陈鹏83    时间: 2014-6-30 08:00
   正好学习到相关视频,先有字节流可以处理各种二进制文件、如图片、mp3等等,字节流处理单元为1个字节;
字符流是为了处理文本文件由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的。


关于什么时间使用:
1.使用非默认编码保存文件或者读取文件时:需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件。

当我们使用默认GBK编码保存文本时,下面2句代码其实是一样的效果,
new OutputStreamWriter(new FileOutputStream("out.txt"))
new FileWriter("out.txt")
当要求保存为其他编码比如UTF-8时,就要这样写
new OutputStreamWriter(new FileOutputStream("out.txt"),"UTF-8")
而如果要读取一个UTF-8编码的文本文件时,同样的要用
new InputStreamReader(new FileInputStream("in.txt"),"UTF-8");
而不能用new FileWriter("in.txt")

2.当文件是字节文件时:
     读取:提高效率用BufferedReader的独有快速方法时,需要转换。FileInputStream BufferedReader
     输出:提高效率一般用BufferedWriter缓存,需要转换。FileOutputStream  BufferedWriter
当文件是字符流时:需要转换。
计算机处理的是字节数据
          读取时:将字符转换为字节,FileReader  BufferedRead
          输出时:将字节转换为字符,FileWriter BufferedWriter
总之,不论是字节文件还是字符文件,提高效率一般会用转换流




   详细参考:http://blog.csdn.net/zxman660/article/details/7875799






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2