黑马程序员技术交流社区

标题: 字节流,字符流。 [打印本页]

作者: 夏天    时间: 2012-9-16 20:00
标题: 字节流,字符流。
本帖最后由 夏诗瑶 于 2012-9-16 20:34 编辑

想听到 关于字节流,字符流清晰的认识,区别啊,转换啊之类的
还有各编码表清晰的解释。

虽然老师讲了,但是感冒了没认真听讲,还是很模糊。
作者: 黑马杨晨    时间: 2012-9-16 20:03
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
     所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
      字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
作者: 张榆    时间: 2012-9-16 20:20
早期,没有字符流,只有字节流,可以处理任何数据;后来,为了便于操作文字数据,出现了字符流,其实就是早期的字节流和编码表;以前,编码一些字母数据都是用的Asci编码表,但它不能编译汉字,所以出现了GB2312编码表,编码汉字,再后来升级为GBK;后期,各个地方都有自己的文字,为了统一编码全地球语言,出现了Unicode编码表,其中包括的就是全地球语言;但因其要编码汉字,所以至少都要2个字节,16位,可是对于字节数据来说这样会浪费空间,所以将Unicode升级优化为UTF-8编码表,它可以根据字符本身改变存储的字节大小;这样,汉字在GBK中可以识别,在UTF中也可以识别,但编码表中的码值都不同,在GBK中,一个汉字2个字节,而在UTF-8中,一个汉字3个字节,这样就可能出现乱码,所以出现字符流,可在内部融合编码表,由自己指定使用哪种编码表。
若要将字节流转换为字符流,用InputStreamReader,读取文本数据,可操作文本数据中的一部分,在写入时,可以通过OPutputStreamWriter将字符流转为字节流写入文本中。
作者: 柳彬    时间: 2012-9-16 20:32
关于字节字符流,很简单啊,字节就是读取字节的流,字符就是字符的流,当然字节流也可以字符,但是字符流效率更加好而已,关于有字符字节转换流InstreamReader,OutputstreamWriter,可以能把字节流转换成字符流,另外这两个转换流,还有设置编码的构造方法,可以参考API文档。关于编码,就是二进制码到各种文字语言的映射。
作者: 夏天    时间: 2012-9-16 20:33
张榆 发表于 2012-9-16 20:20
早期,没有字符流,只有字节流,可以处理任何数据;后来,为了便于操作文字数据,出现了字符流,其实就是早 ...

懂了,懂了
作者: 夏天    时间: 2012-9-16 20:35
黑马杨晨 发表于 2012-9-16 20:03
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,  ...

不管怎样,回答还是有一定帮助的,谢谢你了。




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