区分java字节(Byte)流和字符(character)流

来源:互联网 发布:网络机房建设 编辑:程序博客网 时间:2024/06/10 23:10

Java的流操作分为字节流和字符流两种。
下面这段话来自: http://zhidao.baidu.com/question/51467997
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的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等
常识:
对于GBK编码标准,英文占用1个字节,中文占用2个字节
对于UTF-8编码标准,英文占用1个字节,中文占用3个字节
对于Unicode编码标准,英文中文都是2个字节。这也是为什么叫做unicode,呵呵。

Java IO 参考:
http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
http://www.iteye.com/topic/313635
http://hzxdark.iteye.com/blog/40133

0 0
原创粉丝点击