smallFile和originalFile分别代表两个图片的输入流;将这两个图片的字节读取出来,写进mergingFile,代码如下:
FileOutputStream mergingFile = new FileOutputStream(mFilePath);
byte[] bytes = new byte[1024];
int i;
while ((i = originalFile.read(bytes)) != -1) {
mergingFile.write(bytes, 0, i);
}
bytes = new byte[1024];
while ((i = smallFile.read(bytes)) != -1) {
mergingFile.write(bytes, 0, i);
}
假设Size(图片)函数功能为计算图片的大小;那么Size(merginFile)一般大于Size(smallFile)与Size(originalFile)中的任意一个,并且小于后两者之和(两个文件占位符变成了一个,我的理解)。
然而,在大量的测试中,有意外发生,有些Size(merginFile)要小于Size(smallFile)以及Size(originalFile)中的任意一个
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
最可能的情况是Size()这个方法有问题,计算的不对。也有可能是采用了多线程输出到mergingFile产生的BUG,需要具体调试。
你可以首先大量测试一下,执行完成后mergingFile输出的字节数与smallFile,originalFile的输入字节数之和对比,看看是不是相等。如果相等就是Size()的问题,如果不相等看看mergingFile这个输出流里是否有字节丢失或者覆盖情况。