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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙浩迪 中级黑马   /  2012-6-19 23:32  /  1414 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 sunhaodi 于 2012-6-20 22:58 编辑

我想问下,转换流有什么作用啊?   为什么要把字节流转换成字符流呢?

如果是读取mp3 也要用转换流嘛?

4 个回复

倒序浏览
    转换流是在某些只能用字节流读取/写入的终端上使用的,最典型的例子就是从控制台读取标准输入或者写标准输出,System.in本身就只能是字节流,当你要读取字符的时候就套个转换流。其他常用的情况比如网络通信,Socket也只能拿到字节流。

   因为有一些时候系统给你提供的只有字节流,

    比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。
回复 使用道具 举报
本帖最后由 黑马—陈磊 于 2012-6-19 23:51 编辑

转换流的作用:主要作用将字节流转换成字符流。
----->为什么要把字节流转换成字符流呢?
这是因为有一些时候像System.in标准输入流。就是字节流。要从他那里得到用户在键盘上的输入,就要以转换流将它转换为Reader以方便自己的程序读取输入。
读取mp3 也要用转换流嘛?
读取MP3是不需要的。

回复 使用道具 举报
转换流是将 字节流转换成字符流的桥梁.当你用字节流读取一个文本的时候,就可以用使用的转换流技术了.因为字符流有很多操作文本的方法.字符流有默认编码表也可以指定编码表.有缓冲区...这样会提高效率,和带来很多方便.

转换流只限于操作文本的.因为文本需要编码表解析.记住,只限于文本.
如果读取其他文件的话,比如 MP3.你用了转换流,即转成了字符流.用编码表解析文本的去解析MP3 .就会形成乱码.数据丢失...MP3有MP3的解析方式.用编码表的话很多内容解析不了
回复 使用道具 举报
就像楼上说的:转换流是在某些只能用字节流读取/写入的终端上使用的..
所以当你要从控制台输入时,输进来的就是字节流(比如你要接受时就必须用new InputStreamReader()),
当你要把它存进文本文档时这时候就要用到转换流了
这个说明了为什么要用转换流...
至于转换流的作用也就是起个转换作用...

建议:
当音频文件、图片、歌曲,就用字节流好点,
如果是关系到中文(文本)的,用字符流好点.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马