我需要一个类,它会在数组中找到重复项。我有一个排序列表,其中文件将在大小上进行比较,然后我想比较它们(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;
}
}
}
}
如果两个文件的大小相同 - 则需要通过其他方式对它们进行比较。如果它们也是这样的 - 文件是重复的。 如果大小不同 - 它们不是重复的。
答案 0 :(得分:0)
尝试使用此代码计算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。