请问在字节流中,流按字节来读取和写入数据,但是如果一个字符的2进制是2个字节的,那么读取的时候,流是如何判断读出的2个字节是一个字符的?

解决方案 »

  1.   

    流自身是无法判断的. 这个判断得由你作出..什么时候用字符流 什么时候用字节流.          要是流会自己判断的话..那就不会有这么多乱码的问题了.下面有两段jdk的 inputstream 跟 Reader的代码. 你就能清楚的开出来怎么读了..
    InputStream:
        public int read(byte b[]) throws IOException {//很明显是按照 byte来读的.
    return read(b, 0, b.length);
        }Reader:
        public int read() throws IOException {//很明显是按照char 来读的. 而java里面的char是可以装中文的. 所以用这个字符流可以读中文字符.
    char cb[] = new char[1];
    if (read(cb, 0, 1) == -1)
        return -1;
    else
        return cb[0];
        }就这样喽..
      

  2.   

    我觉得这个没什么问题一般不可能字节和字符混用,byte得到后也可以转成String