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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

本帖最后由 freeboyhrk 于 2013-4-1 15:40 编辑

io中为什么要分为字符流和字节流?

5 个回复

倒序浏览
楼主你好  如果是这样的问题对于初学者来说,那我会认真解答,如果对资深学者来说没有必要提问。
我也不说废话,先说说两者的概念,

什么是字符流, 为什么使用字符流
  用字节流可以读写字符数据, 但是需要人工编码解码, 非常麻烦.
  使用字符流可以自动编码解码, 读取的时候直接读到字符, 写出的时候直接写出字符.
  通常在需要读写字符数据的时候都是使用字符流来操作的.
像一些文本文件都可以用字符流来读取。像MP3或者拷贝图片或者媒体文件,都可以用字节流来读写,
因为字符流的底层还是字节流,只不过java给字符流做了封装,让我们用字符流读写文件比较方便。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 赞一个!继续加油哦!

查看全部评分

回复 使用道具 举报
我觉的这个就是要提高效率的,纯文本要是用字节流是不是很慢呢?就好像读取流与写入流,不用缓冲区一样可以,但是使用了缓冲区后效率提高了。
下面的内容是看了毕老师对IO的总结:
字符流的由来:因为文件的编码不同,而有了对字符进行高效操作的字符流对象。
              原理:就是基于字节流读取字节时,去查指定的码表。
字节流和符的区别:
    1,字节流读取的时候,到一个就返回一个字节。字符流使用了字节流读到一个或者多个        字节(中文对应的字节数是两个,在UTF-8码表中是三个字节)时,先去查指定的编        码表,将查到的字符返回。字符流只能处理字符数据。
     2.字节流可以处理所有类型数据,如图片,mp3,avi等。

结论:只要处理纯文本数据,优先考虑使用字符流,除此之外都用字节流。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
楼主是来卖萌的
回复 使用道具 举报
就好比你外出办事为什么要分走路和坐车一样的道理。
两种不同的方式,办事的效率等各有不同。。。
回复 使用道具 举报
字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马