黑马程序员技术交流社区

标题: 字符流和字节流的总结 [打印本页]

作者: 普哥    时间: 2015-1-1 19:22
标题: 字符流和字节流的总结
1、字节流和字符流的区别仅仅是操作单位不一样。
2、InputStream 和 Reader 是所有输入流的基类, 他们都是抽象类, 本身不能创建实例, 但是他们是所有输入流的模板。
3、一般来说处理字符或字符串时使用字符流, 处理字节或二进制对象时应使用字节流。
4、字符流必须关闭资源, 因为它中间有缓冲区; 而字节流不需要! 但是一般都会(最后)关闭资源!
首先来讲安字节流:
       字节流主要是操作 byte(字节)的类型数据:
       字节输出流: OutputStream
       字节输入流: InputStream
再来看字符流
       Java 中的字符是 Unicode 编码,是双字节的,1 个字符 等于 2 个字节;使用字节来处理字符文本就不太方便了,此时可以考虑使用字符流;
       字符流主要是操作 char 的类型数据:
       字符输出流: Writer
       字符输入流: Reader
最后还要注意这一点:
字节流和字符流在使用上的代码结构都是非常类似的, 但在进行字符流操作的时候会使用到缓冲区(内存中),

而字节流操作的时候是不会使用
到缓冲区的。
在输出的时候, OutputStream 类即使最后没有关闭内容也可以输出。 但是如果是 Writer
的话, 则如果不关闭, 最后一条内容是无法输出的, 因为所有的内容都是保存在了缓冲区
之中, 每当调用了 close() 方法就意味着清空缓冲区了。 那么可以证明字符流确实使用了缓冲区:
字节流: 程序 文件
字符流: 程序 缓冲区(内存中) 文件
如果现在字符流即使不关闭也可以完成输出的话, 则必须强制性清空缓冲区,使用flush()方法。

依我来看,两者相比, 肯定使用字节流更加的方便, 而且在程序中像图片、 MP3 等都是采用字节的方式的保存, 那么肯定字节流会比字符流使用的更广泛。
但是需要说明的是, 但是如果要是想操作中文的话, 字符流肯定是最好使的。(字节流的话
可能会出现乱码(一个汉字分成了两份)!)




作者: 赵越海    时间: 2015-1-2 04:30
本帖最后由 赵越海 于 2016-7-8 17:28 编辑

         .
作者: 云兮丶    时间: 2015-1-2 07:37
:)总结的很到位。




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