黑马程序员技术交流社区

标题: 字节流和字符流的区别? [打印本页]

作者: 刘真    时间: 2012-7-30 10:08
标题: 字节流和字符流的区别?
本帖最后由 刘真 于 2012-7-30 22:06 编辑

关于使用字符流还是字节流的区别?哪个更好呢?
作者: 程旦    时间: 2012-7-30 10:14
读文本的话用字符流,读文件的话用字节流。。。。。
作者: 刘真    时间: 2012-7-30 10:38
程旦 发表于 2012-7-30 10:14
读文本的话用字符流,读文件的话用字节流。。。。。

刚刚自己找了找答案,字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。而字符只有在内存中才会形成,所以开发当中字节流使用比较广泛。
作者: 涂金哲    时间: 2012-7-30 10:45
字节流的抽象基类:InputStream的抽象方法abstract int read()读取一个字节,并将其返回。 OutputStream 的抽象方法abstract void write()将一个字节写到指定的位置。字节流可以操作二进制字节很通用,速率也很快。但是字节流不易于我们去直接阅读(我们总不能去读0、1这样的数字吧),于是将我们日常的文字与抽取出来的字节序列一一对应就出现了字符码表。基于字节流产生了字符流。字符流用来操作文本数据就变的方便了。字符流数据可以查找指定的编码表,显示出来的就是我们的文字了。
作者: 李志广    时间: 2012-7-30 10:53
       在所有的流操作里。字节永远是最基础的。任何基于字节的操作都是正确的。无论你是文本文件还是二进制的文件。 如果确认流里面只有可打印的字符,
包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。
由于编码不同,多字节的字符可能占用多个字节。比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,
将1个或多个字节转化为java里面的unicode的字符,然后进行操作。字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream
以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。如果你确认你要处理的流是可打印的字符,那么使用字符流会看上去简单一点。
如果不确认,那么用字节流总是不会错的。

希望对你有所帮助!!!!!!!!!{:soso_e100:}





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