黑马程序员技术交流社区

标题: IO问题 [打印本页]

作者: freeboyhrk    时间: 2013-4-1 14:59
标题: IO问题
本帖最后由 freeboyhrk 于 2013-4-1 15:40 编辑

io中为什么要分为字符流和字节流?
作者: 袁梦希    时间: 2013-4-1 15:22
楼主你好  如果是这样的问题对于初学者来说,那我会认真解答,如果对资深学者来说没有必要提问。
我也不说废话,先说说两者的概念,

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

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

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


作者: 绿树林    时间: 2013-4-1 15:26
楼主是来卖萌的
作者: HM刘俊    时间: 2013-4-1 15:40
就好比你外出办事为什么要分走路和坐车一样的道理。
两种不同的方式,办事的效率等各有不同。。。
作者: 郑才熹    时间: 2013-4-1 16:01
字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。




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