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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁胜海 中级黑马   /  2012-10-31 19:35  /  2323 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解啊。一直都搞不明白如何去区别使用它们。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的

在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[]    String.getBytes(String charsetName)
也是一样的道理

至于java.io中还出现了许多其他的流,按主要是为了提高性能和使用方便,
如BufferedInputStream,PipedInputStream等

点评

谢谢谢谢  发表于 2012-10-31 23:58

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
java流分为两类:
  1、字节流:可以用于读写二进制文件及任何类型文件
  2、字符流:可以用于读写文本文件(能用记事本打开的文件),
   但不能操作二进制文件
   
   字节流:InputStream 、OutputStream
   字符流:Reader (输入)、Writer(输出)

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
在io里面有四大基类是实现输入输出的,inputstream,outputstream,reader,writer。
前面两个可以处理任何文件后者只能处理文本文件。同时四者都可以加入缓冲区。
回复 使用道具 举报
字节流也称为原始数据,计算机中文件的储存是都是以字节进行储存,所以在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。而字符流的实现是基于自动转换的,读取数据时会把数据按照JVM的默认编码自动转换成字符。
一般类型的文本文件通过字符流进行处理,图片,音频类的文件用字节流进行处理
回复 使用道具 举报
数据存在在计算机中是以二进制形式存放的,java用位二进制表示一字节,文件由许多字节流组成。理论上说用字节流可以访问任何文件,但为了访问文件的方便,java定义了字符流访问文件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马