У меня есть от 10000 до 12000 файлов изображений, и во внешнем хранилище присутствует пространство до 800 МБ.
Я использую цикл, который берет каждый путь к файлу и генерирует 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.
И сделает ли обтекание потока буфера во входном потоке быстрее?