0

使用 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();
4

1 回答 1

2

你有两个问题:

  • 您正在available()用作了解文件长度的一种方式。这不是该方法的作用。available() 几乎不应该被使用。我从未见过任何使用它是个好主意的用例。
  • 您正在使用该read()方法并忽略其返回值。您使用它来 dcrment 大小变量,但您不在乎字节数组是用读取字节填充还是用零填充。read()不能保证读取与您要求的一样多的字节。

字节通过线路发送并被另一端读取的方式可能存在其他错误。

于 2012-11-06T07:57:35.160 回答