解决方案 »

  1.   

    这个read()的放回类型必须是int。你去看j2se的api上面有。
      

  2.   

    估计是int比较通用 直接用byte可能会有问题 把byte存在int里也不会精度丢失
      

  3.   

    对返回的-1进行判断啊,通常用while循环,读出文件中的数据。举个例子:
    public static byte[] readInputStream(InputStream instream) throws Exception {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    byte[] buffer = new byte[1 * 1024];
    int length = 0;

    while(-1 != (length = instream.read(buffer))){
    baos.write(buffer, 0, length);
    }
    instream.close();
    return baos.toByteArray();
    }
      

  4.   

    返回值是读入缓冲区的总字节数,用int更方便些吧,不然你和-1比较的时候,还是要转成int吧!
      

  5.   

    他问的应该是int read(),不是int read(byte[] buf)
      

  6.   

    int read()方法读一个字节,那么这个字节的范围就可能是-128 ~ 127(byte类型的范围),包括了-1,如果返回值为byte,那我问你如何表示已读到流末尾?如果返回一个byte类型的-1,那它到底是数据,还是表示流末尾?所以当然只能用范围比byte大的类型表示,而short实际上空间占用和int一样,而且Java默认数值类型是int,所以为了方便,直接返回int类型,当返回值是-1时表示流结束,返回值是0 ~ 255时表示数据。你所说的8个1表示-1是完全错误的想法,read方法返回的是字节,不是位,8个字节1就是8个字节1,8位1才是无符号数值255,有符号数值-1。
      

  7.   

    他问的应该是int read(),不是int read(byte[] buf)应该是我理解错了