因为你使用的是带缓冲的输入输出流,相当于为InputStream,OutputStream类增加缓冲区功能,此时读写中间都要经过缓冲区,所以在使用write()方法写入输出流时实际上是先将数据写入缓冲区中,等缓冲区写满之后再一次性写入磁盘,这就是为什么你复制后的图片损失了一部分的原因,因为最后一次写入缓冲区时没有将缓冲区写满,因此缓冲区中的那些内容也就不会写入到磁盘。
所以一般为了确保缓冲区中的数据一定被写入输出流,建议写入完成之后执行flush()将缓冲区中的数据全部写到输出流中。
你在fis.close();之前加上bufos.flush();试试 |