while(true) {
    byte [] b = new byte[1024];//堵塞处,此语句会导致IOException 异常
    int n = di.read(b);
    if(n<1)
     break;
    os.write(b,0,n);
             if(n<1024)break;//加这句试试看
    }

解决方案 »

  1.   

    while(true) {
        byte [] b = new byte[1024];//堵塞处,此语句会导致IOException 异常
        int n = di.read(b);
        if(n<1)
         break;
        os.write(b,0,n);
        }换成下面的试试
    byte [] b = new byte[1024];//堵塞处,此语句会导致IOException 异常
    int n = di.read(b);
    os.write(b,0,n);还有,可以使用缓冲流来读,这样好一点
      

  2.   

    to bluesmile979(笑着) :
        if(n<1024)break;会导致信息没读完就返回to CoolAbu(阿卜-Never Stop(★★★★)) :
        不用循环读的话,文件大时次数就太多,这里还有指定读取长度
      

  3.   

    to CoolAbu(阿卜-Never Stop(★★★★)) :
        我已经用了缓冲,不用缓冲也一样。to  OnlyLikeJava(甜咖啡):
        增大数组没用,还是堵塞
    谢谢各位高手,还有什么原因吗?
      

  4.   

    os.write(b,0,n);
    改称:
    buf = new byte[n];
    System.arraycopy(b, 0, buf, 0, n);
    //然后吧buf,ArrayList链起来,最后把ArrayList转化成一个byte[]