while(true){
       byte[] b = new byte[1024];
       int nRead = input.read(b,0,1024);
   }
在这个循环中每次最多只能读取1024个字节,然后放入b;但偏移量是如何计算的;既是不是第一次循环后偏移量是1023,第二次循环后偏移量是2047,以此类推;请各个高手解释一下;拜托
                            

解决方案 »

  1.   

    off指的是b这个byte数组的偏移量。返回值是实际读取的字节数,因为可能缓冲里没有1024个字节给你读取。
      

  2.   

    你数组最大就1024个字节,偏移量怎么超过1023呢?只能将输入流中最多 len 个数据字节读入字节数组。尝试读取多达 len 字节,但可能读取较少数量。以整数形式返回实际读取的字节数。类 InputStream 的 read(b, off, len) 方法只重复调用方法 read()
      

  3.   

    懂了;原来OFF是数组的偏移量,我一直以为是读取的文件的偏移量;多谢你们了;大侠
      

  4.   

         byte[] b = new byte[1024]; 
    while(true){    
          int nRead = input.read(b,0,1024); 
      }
    好像是读取了多少,input就会消耗多少,读完了,input就是空了.