我有 10000 到 12000 个图像文件,并且在外部存储中存在高达 800 MB 的空间。
我正在使用一个循环,它获取每个文件路径并生成它的 md5,但是由于要读取大量文件来创建 md5,这需要很多时间。
这是生成文件md5的算法。
public static String getMd5OfFile(String filePath) {
String returnVal = "";
try {
InputStream input = new FileInputStream(filePath);
// byte[] buffer = new byte[1024];
byte[] buffer = new byte[2048];
MessageDigest md5Hash = MessageDigest.getInstance("MD5");
int numRead = 0;
while (numRead != -1) {
numRead = input.read(buffer);
if (numRead > 0) {
md5Hash.update(buffer, 0, numRead);
}
}
input.close();
byte[] md5Bytes = md5Hash.digest();
for (int i = 0; i < md5Bytes.length; i++) {
returnVal += Integer.toString((md5Bytes[i] & 0xff) + 0x100, 16).substring(1);
}
} catch (Throwable t) {
t.printStackTrace();
}
return returnVal.toUpperCase();
}
所以问题是我可以增加缓冲区大小以使操作更快,我应该做多少,这不会破坏操作或产生 md5 的生成问题。
并且将缓冲流包装在输入流中会使其更快吗?