使用Java进行文件拆分的问题

时间:2012-11-06 07:42:51

标签: java java-io

使用java拆分为不同字节数组时的文件,当连接后不会被文件的应用程序呈现。即使原始文件和重新加入的文件上的字节数相同,也会发生这种情况。

这里的目标是将一个大文件拆分成不同的字节数组,并通过网络使用不同的编程语言(C#)重新加入这些字节数组。

我为拆分编写的代码如下:

File f = new File(fileLoc);
FileInputStream fi = new FileInputStream(f);
int size = fi.available();

int MB2 = 1048576 * 2;
int total = size / MB2;
if (size % MB2 != 0) {
    total += 1;
}
int ch;

while (size > 0) {
    int arraysize;
    if (size < MB2) {
        arraysize = size;
    } else
        arraysize = MB2;
    byte bytes_read[] = new byte[arraysize];
    ch = fi.read(bytes_read, 0, arraysize);
    // The byte_read is added to an array list of byte[]
    // and send along with certain other parameters 
    size = size - ch;
    count++;
}
fi.close();

1 个答案:

答案 0 :(得分:2)

你有两个问题:

  • 您使用available()作为了解文件长度的方法。这不是方法的作用。应该几乎不会使用available()。我从未见过任何使用它的用例是一个好主意。
  • 您正在使用read()方法并忽略其返回值。您可以使用它来修改size变量,但是如果字节数组填充了读取字节或填充了零,则无需关心。 read()不能保证读取所要求的字节数。

通过线路发送字节的方式可能还有其他错误,并且另一方也会读取。