new File().length() 返回的是long型。如果超过了,
就被你强制转为int,有可能会变成负数。那就会出错

解决方案 »

  1.   

    FileOutputStream 中的方法 后面中的两个参数都是int  那byte[]的长度不是不能超过整形的最大值?public void write(byte[] b ,
                      int off,
                      int len)
               throws IOException
      

  2.   

    当然有可能!
    如果文件过大,为什么要一次性读取到byte[]中啊?
      

  3.   

    大文件就不要一次读入内存啊.int最大可以容纳2^31-1,这大概是2g的大小,你要一次读入这么大的文件吗?就算是服务器内存多,也不能这样啊.