(JAVA)如何利用MD5码查找目录下的相同重复文件
2021/10/28 11:10:32
本文主要是介绍(JAVA)如何利用MD5码查找目录下的相同重复文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
老师布置的一个使用java查找硬盘目录下的全部相同文件,这可把我愁的,在网上一顿乱找,找不到看着舒服明白的,自己动手写代码吧,上菜。
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.*; public class homeWork { public static void main(String ager[]){ File file1 = new File("E:\\text"); //查找的目录 HashMap<String,String> hashMap = new HashMap(); //创建一个hashMap存放文件路径和它的MD5值 getfiles(file1, hashMap); Set<Map.Entry<String, String>> set= hashMap.entrySet(); ArrayList<String> array = new ArrayList<>(); //存放MD5 for (Map.Entry<String, String> map : set){ array.add(map.getValue()); } array.sort(new hashComparator()); //按MD5排序 List<String> keyList = new ArrayList<>(); //存放文件路径 int count = 1; System.out.println("-----相同文件为-------"); for (int i = 1; i < array.size(); i++){ if (array.get(i).equals(array.get(i - 1))){ count++; }else if (count > 1){ for (Map.Entry<String,String> entry : set){ if (array.get(i - 1).equals(entry.getValue())){ keyList.add(entry.getKey()); } } System.out.println(keyList); System.out.println("--------------------"); keyList.clear(); count = 1; //reset the count } } } public static void getfiles(File file, HashMap hashMap){ //保存文件路径及MD5 if (file.isFile()){ String fileName = file.getAbsolutePath(); String hashCode = getFileMD5(file); hashMap.put(fileName, hashCode); return; } File[] files = file.listFiles(); for (File file1 : files){ getfiles(file1, hashMap); } } public static String getFileMD5(File file){ //获取MD5 BigInteger bigInt = null; try { FileInputStream fis = new FileInputStream(file); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] buffer = new byte[1024]; int length = -1; while ((length = fis.read(buffer, 0, 1024)) != -1) { md.update(buffer, 0, length); } bigInt = new BigInteger(1, md.digest()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bigInt.toString(16); } } class hashComparator implements Comparator<String>{ //比较器 @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }
这篇关于(JAVA)如何利用MD5码查找目录下的相同重复文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程