当使用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();发布于 2012-11-06 15:57:35
您有两个问题:
,
available()作为一种知道文件长度的方法。这不是该方法所做的事情。available()几乎不应该使用。我从来没有见过使用它是一个好主意的用例。read()方法,而忽略了它的返回值。您可以使用它来描述size变量,但是您并不关心字节数组是用读字节填充还是用零填充。不能保证read()能够读取您要求的那么多字节。在通过线路发送字节并由另一端读取的方式中可能存在其他错误。
https://stackoverflow.com/questions/13246528
复制相似问题