int count = 0;
byte[] buffer = new byte[8192]; // more if you like but no need for
int j = length_img % 8192;
int value = length_img - j;
int incre = 0;// it to be the entire file size
for (int i = 0; i < (value / 8192) + 1; i++) {
if (length_img == incre + j) {
buffer = new byte[j];
int pair = dataInputStream.read(buffer);
System.out.print("i am here for last chunk" + buffer.length
+ "value of j is" + j + "incre value is" + incre
+ "the value of i is" + i
+ "and the value of count is" + pair);
image0OutFile.write(buffer, 0, pair);
break;
}
else {
count = dataInputStream.read(buffer);
image0OutFile.write(buffer, 0, count);
incre += 8192;
}
}
这是一个问题所在的部分。我得到这个输出length_img:3147850 [B @ 72d86c58 我在这里的最后一个chunk2122值j is2122incre值is3145728我的值is384而count的值是496bublo ...如果你注意到pair的值应该是2122而是它的496这就是为什么文件是腐败的。
答案 0 :(得分:2)
您应该关闭FileOutputStream
:
image0OutFile.close
这会将最后一部分刷新到文件中。或者你甚至可以打电话:
image0OutFile.flush()
但建议使用上一个。而且你应该总是关闭你打开的溪流。
答案 1 :(得分:0)
始终关闭流
首先将代码放在Try catch
块中。在Finally
块中关闭流。
finally{
image0OutFile.close();
}
不要去冲洗。当关闭时自动冲洗发生。