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
Java的流操作包括字节流和字符流,它们处理数据的方式不同。GBK编码中,英文占1字节,中文占2字节;UTF-8编码下,英文占1字节,中文占3字节;而Unicode编码中,所有字符都占2字节。了解这些差异对Java IO操作至关重要。
898

被折叠的 条评论
为什么被折叠?



