java 组合分块文件并校验


前提是这样子的:

多线程队列生成了对应有序的文件,然后由另外一个单线程合并这些分块的文件至单文件。
合成完毕后用 md5 或 sha-1 校验输出结果。

虽然单线程合并的时候已经装载了每个分块文件的输入流,但是在校验时还要重新装入一遍,
在配置稍微低一些的手机上去校验大文件时就比较吃力了,有没有可以优化的地方呢?

java 多线程 Android 算法

全屏杀神乐正凌 11 years, 8 months ago

这个可以考虑下面3个方案:
1. 如果对内存不敏感,写文件的时候可以把内容都保存在内存中,写完文件再调用生成md5的方法就可以。
2. 使用PipedInputStream和PipedOutputStream,具体使用方法可以查jdk的api。这种方式要使用两个进程,写文件和生成md5分别由两个线程完成,多核处理器下运行效率和内存占用都很高效。
3. 查看MessageDigest的update方法,写文件的时候每写一个buffer,就update一下,最后再调用digest来生成最终的结果。

Kamennn answered 11 years, 8 months ago

Your Answer