英文字符占两个字节,但IO里面的InputStream的read()方法为什么一次就可以读一个英文字符.(比如说2个英文字符调用两次read()方法就都读取到了),read()方法不是说一次读一个字节吗?

解决方案 »

  1.   

    LZ 英文是占一个字节,read方法读取一个没问题的。
      

  2.   

    java 
    char类型是两个字节
      

  3.   

    是两个字节啊,但为什么用InputStream类型read()方法一个英文字符不是读取两次呢?
      

  4.   

    inputstream.read()一次读取一个字节
    在文件当中,如果文件的编码方式是gb2312,那么,一个英文字符占一个字节,如果文件编码方式是utf-16,那么一个英文字符占两个字节。在jvm中,一个英文字符占两个字节,但是在文件中却不是这样。因此,你是把文件的编码方式和jvm的字符表示方式混了!
      

  5.   

    文件存放数据是不是先根据编码方式来决定占用多少字节,然后再存放啊?文件默认情况是gb2312吗?
    "在jvm中,一个英文字符占两个字节",是指:
    JVM在内存中一个英文字符占两个字节吗?
    如果是占两个字节那么用ByteArrayOutputStream向内存中写入两个字符是不是一共占4个字节,并且用read()方法是不是需要读取4次啊?我的理解肯定有错误,但我不知道错误在那,请指点一下!