黑马程序员技术交流社区

标题: java IO 技术 [打印本页]

作者: 刘圣繁    时间: 2013-1-4 15:59
标题: java IO 技术
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集
我在视频中看到老师   将一个文件以字节流的方式存到另一个文件
方式是  先将字符流转为字节流 再将字节流转为字符流 写到文件中
我不明白的是为什么  还要用OutputStreamWriter 将字节流转为字符流 写到文件里   题目没有这种要求  难道这是必须的吗


作者: 马志军    时间: 2013-1-4 16:08
转成字符流可以用缓冲流BufferedWriter,一来效率高,二来可以用它独有的方法newLine,我就知道这好处了
作者: 李丹    时间: 2013-1-4 17:31
应该不是必须的吧  对于文本类型的文档 使用字符流应该更好一些 以后可以使用BufferedReader和 BufferedWriter缓冲的readLine() newLine()方法。。老师是为了提高效率吧,然后又转成了字符流对象,如果这里是非文本文件的话,应该就不会转了。
作者: 何竹冬    时间: 2013-1-4 20:21
本帖最后由 何竹冬 于 2013-1-4 20:29 编辑

你好
如果你得到一个字节流想要按照字符进行读写的话就需要使用字符转换流。
举例
键盘录入
  1. //System.in获取的是字节输入流,如果要按照字符读取就要使用字符转换流输入流,这里为了提高效率使用缓冲读取流
  2.                 BufferedReader bufferIn=new BufferedReader(new InputStreamReader(Syststem.in));
复制代码
  1. //同理FileOutputStream是字节输出流,如果要写入字符要使用字符转换流输出流
  2.                 BufferedWriter bw = new BufferedWriter(
  3.                         new OutputStreamWriter(new FileOutputStream("c:\\Ceshi1.txt")));
复制代码

作者: 张森    时间: 2013-1-5 02:08
不是必须的,你用字节流操作也可以,但是对于文本文件来说用你字符流的效率要高,字节流可以用于对二进制类似的文件操作。




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