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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 普哥 中级黑马   /  2015-1-1 19:22  /  1033 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

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



评分

参与人数 1黑马币 +10 收起 理由
夏至落叶 + 10 很给力!

查看全部评分

2 个回复

倒序浏览
本帖最后由 赵越海 于 2016-7-8 17:28 编辑

         .
回复 使用道具 举报
:)总结的很到位。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马