繁体   English   中英

通过hashCode比较两个文件

[英]Compare two files by hashCode

我需要一个类,它将在数组中找到重复项。 我有一个排序的列表,其中将比较文件的大小,然后我想根据某些条件(hashCode?)对它们进行比较。

public class FileComparison {

public void compare(ArrayList<File> arrayOfFiles) throws Exception {


    for(int i = 0; i < arrayOfFiles.size() - 1; i++) {
        for (int y = i + 1; y < arrayOfFiles.size() - 1; y++) {
            if(arrayOfFiles.get(i).length() == arrayOfFiles.get(y).length()) {
                //byte[] b1; 
                //byte[] b2;
                //don't know what to do     
            }
            if(arrayOfFiles.get(i).length() != arrayOfFiles.get(y).length()) {
                break;
            }
        } 
    }

}

如果两个文件的大小相同-它需要通过另一种方式进行比较。 如果它们也相同,则文件是重复的。 如果大小不同-它们不是重复项。

尝试使用以下代码来计算MD5校验和并对其进行比较:

import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.DigestInputStream;
import java.security.MessageDigest;

public class MD5 {

    public static String getMD5Sum(String filePath) throws Exception{

        MessageDigest md = MessageDigest.getInstance("MD5");

        try (InputStream is = Files.newInputStream(Paths.get(filePath))) {
          DigestInputStream dis = new DigestInputStream(is, md);
          int read = 0;
          do{
              read = dis.read();
          }while(read > -1);
        }
        byte[] digest = md.digest();
        digest.toString();
         String result = "";

           for (int i=0; i < digest.length; i++) {
               result += Integer.toString( ( digest[i] & 0xff ) + 0x100, 16).substring( 1     );
           }
           return result;
    }
}

方法getMD5Sum将返回文件的MD5 cehchsum。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM