黑马程序员技术交流社区

标题: 字节流和字符流问题 [打印本页]

作者: 梁枝武    时间: 2012-11-9 15:36
标题: 字节流和字符流问题
本帖最后由 梁枝武 于 2012-11-10 17:16 编辑

字节流于字符流 区别在哪? 主要是 文件的读写效率方面的区别
作者: y510662669    时间: 2012-11-9 17:28
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串。
字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点。
如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
作者: 陈家明    时间: 2012-11-9 19:53
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的,但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联的。在从字节流转化为字符流时,实际上就是byte[]转化为String:public String(byte bytes[], String charsetName)。而在字符流转化为字节流时,实际上是String转化为byte[]:byte[]  String.getBytes(String charsetName)。







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