我正在创建一个程序,通过将文件的 MD5 与已检查的 MD5 的数据库进行比较来检查文件。
它循环访问数千个文件,我发现它使用了大量内存。
如何使我的代码尽可能高效?
for (File f : directory.listFiles()) {
String MD5;
//Check if the Imagefile instance is an image. If so, check if it's already in the pMap.
if (Utils.isImage(f)) {
MD5 = Utils.toMD5(f);
if (!SyncFolderMapImpl.MD5Map.containsKey(MD5)) {
System.out.println("Adding " + f.getName() + " to DB");
add(new PhotoDTO(f.getPath(), MD5, albumName));
}
}
Run Code Online (Sandbox Code Playgroud)
这是MD5:
public static String toMD5(File file) throws IOException, NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file.getPath());
byte[] dataBytes = new byte[8192];
int …Run Code Online (Sandbox Code Playgroud)