使用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();
答案 0 :(得分:2)
你有两个问题:
available()
作为了解文件长度的方法。这不是方法的作用。应该几乎不会使用available()。我从未见过任何使用它的用例是一个好主意。read()
方法并忽略其返回值。您可以使用它来修改size变量,但是如果字节数组填充了读取字节或填充了零,则无需关心。 read()
不能保证读取所要求的字节数。 通过线路发送字节的方式可能还有其他错误,并且另一方也会读取。