是否可以这样理解:   纯文本文件,比如纯汉字。不用 Reader 而用 inputstream 也能正确读出,是否因为字节流每次都读 1 个字节,只是效率和方便性上相比 字符流 有不足 ?    字节流是不带编码信息的,需要知道原始的字节的字符集,才能转码过来,而reader不用转,2边字符集一致的话,直接就出来了。而图片之类是图片编码,不是字符编码,所以只能用字节流处理 ?   字节流通吃,而字符流是处理具有某种编码格式的字符 ?大家有什么看法和纠错,请指点下

解决方案 »

  1.   

      也就是说字节流可用于任何类型的对象,而字符流只能处理字符或者字符串,Unicode字符;
    也就是说 字节流可以读写所有的文件,而字符流只能读写文本文件。但是能用字符流的时候就不要用字节流,因为字符流的读写效率更高一些。
      

  2.   

    如果用ajax技术的话,他的编码是utf-8如果服务器是gbk也会出现乱码现象 ?
      

  3.   

      纯文本文件,比如纯汉字。不用 Reader 而用 inputstream 也能正确读出,是否因为字节流每次都读 1 个字节,只是效率和方便性上相比 字符流 有不足 ? 
    答:“字节流每次都读 1 个字节”听起来挺别扭的,应该是“以字节为单位进行读写”,性能上当然是字节流效率更高,文件在硬盘上都是二进制,任何机器都是一样:八位构成一个字节,所以字节流读取时很方面。而用字符流读写时,需要有个字符和字节的转化过程,多了这个过程所以效率就下降了。  字节流是不带编码信息的,需要知道原始的字节的字符集,才能转码过来,而reader不用转,2边字符集一致的话,直接就出来了。而图片之类是图片编码,不是字符编码,所以只能用字节流处理 ?
    答:啥叫编码方式?就是对字节指定的一系列规则。字节本身怎么会有编码呢? reader是在读取时就已经知道编码方式了,这才能读取,不然不知道编码方式,你叫它在底层如何读取字符呢?鬼知道几个字节以什么样的方式构成的一个字符,况且各种字符集规则各不相同。  字节流通吃,而字符流是处理具有某种编码格式的字符 ?
    答:对。总体来说,lz的理解还是基本正确的。
      

  4.   

    UTF-8编码格式下,中文占三个字节,GBK编码格式下,中文占两个字节。在UTF-8格式下,如果你用字节流没有读到三字节的整数倍的话,会出现乱码,在GBK格式下,如果你用字节流没有读到两字节的整数倍的话,会出现乱码