黑马程序员技术交流社区
标题:
字符流和字节流的总结
[打印本页]
作者:
普哥
时间:
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