0
       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;
            }
        }

这是一些问题所在的部分。我得到这个输出长度_img:3147850 [B@72d86c58我在这里是为了最后一个块2122j的值是2122incre值是3145728我的值是384并且计数的值是496bublo......如果你注意到的值对应该是 2122,而不是 496,这就是文件损坏的原因。

4

2 回答 2

2

您应该关闭FileOutputStream

image0OutFile.close

这会将最后一部分刷新到文件中。或者您甚至可以致电:

image0OutFile.flush()

但是推荐上一个。你应该总是关闭你打开的流。

于 2013-03-23T09:56:23.237 回答
0

始终关闭流

首先将代码放入Try catch块中。关闭块中的流Finally

finally{
        image0OutFile.close();
      }

并且不要进行刷新。当关闭时调用自动刷新。

于 2013-03-23T09:58:40.280 回答