解决方案 »

  1.   

    for (int x = 1; x < 3; x++) {
    ne.add(new FileInputStream("D:\\" + x + ".part"));
    }
    这里说明只合并两个文件,所以如果被分割的文件过大,被分割成了超过2个碎片,合成的时候自然变小了。
    byte[] buf = new byte[1024 * 1024];
    int count = 0;
    int len = 0;
    while ((len = fi.read(buf)) != -1) {
    count++;
    // String name=count+".part";
    fo = new FileOutputStream("D:\\" + count + ".part");
    fo.write(buf, 0, len);
    }
    从上面代码看出来如果文件大于2M,将被分割成至少3个碎片
      

  2.   

    代码没有问题,问题可能出在 
    for (int x = 1; x < 3; x++) {
    ne.add(new FileInputStream("D:\\" + x + ".part"));
    }
    你这里写死了 是不是少一块
    另外 final  Iterator<FileInputStream> it = ne.iterator();
    内部类引用外部变量,外部变量必须是final的
      

  3.   

    你为何不看看for (int x = 1; x < 3; x++)这个呢?不一定是分割成两个子文件的。