A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘圣繁 中级黑马   /  2013-1-4 15:59  /  1930 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
转成字符流可以用缓冲流BufferedWriter,一来效率高,二来可以用它独有的方法newLine,我就知道这好处了
回复 使用道具 举报
应该不是必须的吧  对于文本类型的文档 使用字符流应该更好一些 以后可以使用BufferedReader和 BufferedWriter缓冲的readLine() newLine()方法。。老师是为了提高效率吧,然后又转成了字符流对象,如果这里是非文本文件的话,应该就不会转了。
回复 使用道具 举报
本帖最后由 何竹冬 于 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")));
复制代码
回复 使用道具 举报
不是必须的,你用字节流操作也可以,但是对于文本文件来说用你字符流的效率要高,字节流可以用于对二进制类似的文件操作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马