检测某一目录下md5相同的文件

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * 检测某一目录下md5相同的文件
 */
public class Test {

    public static void main(String[] args) throws IOException {
        Map<String, String> map = new HashMap<String, String>();
        Map<String, List<String>> map1 = new HashMap<String, List<String>>();
        String path = "D:\\Nihaorz\\Documents\\work\\综合运维基线包\\实时解压版本\\OperationCenter-1.8\\OperationCenter\\WEB-INF\\lib";
        File dir = new File(path);
        File[] files = dir.listFiles();
        for (File file : files) {
            String fileName = file.getName();
            String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(new FileInputStream(file)));
            if (!map.containsKey(md5)) {
                map.put(md5, fileName);
            } else {
                if (!map1.containsKey(md5)) {
                    List<String> list = new ArrayList<String>();
                    list.add(fileName);
                    map1.put(md5, list);
                } else {
                    map1.get(md5).add(fileName);
                }
            }
        }
        if (map1.size() > 0) {
            System.out.println("有如下jar包md5码重复");
            System.out.println("------------------------------------------");
            Iterator<String> it = map1.keySet().iterator();
            while (it.hasNext()) {
                String md5 = it.next();
                System.out.println("MD5:" + md5);
                System.out.println("fileName:" + map.get(md5));
                List<String> fileNames = map1.get(md5);
                for (String fileName : fileNames) {
                    System.out.println("fileName:" + fileName);
                }
            }
        }
    }

}
时间: 2024-11-08 13:14:48

检测某一目录下md5相同的文件的相关文章

Python扫描指定目录下(包括子目录)的文件

扫描指定目录下的文件,或者匹配指定后缀和前缀的函数. 如果要扫描指定目录下的文件,包括子目录,调用scan_files("/export/home/test/") 如果要扫描指定目录下的特定后缀的文件(比如jar包),包括子目录,调用scan_files("/export/home/test/", postfix=".jar") 如果要扫描指定目录下的特定前缀的文件(比如test_xxx.py),包括子目录,调用scan_files("

一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 @for&ever 2010-07-03 功能: 获取指定目录下面符合一定规则的文件名称和文件修改时间,并保存到指定的文件中 脚本如下: #!/usr/bin/env python# -*- coding: utf-8 -*- '''Created on 2010-7-2 @author: fore

Python:打印目录下最大的十个文件

打印指定目录下最大的十个文件,并按倒序输出: vim top10.py #!/usr/bin/env python import os import sys import operator def gen_dic(topdir): dic = {} a = os.walk(topdir) for p, d, f in a: for i in f: fn = os.path.join(p, i) f_size = os.path.getsize(fn) dic[fn] = f_size retur

JAVA之File类-将指定目录下的所有java文件的绝对路径存储到文本文件中

/* * 将指定目录下的所有java文件的绝对路径存储到文本文件中 * 建立一个java列表. * 思路: * 1.对指定目录进行递归 * 2.获取递归过程所有的java文件的路径 * 3.将这些路径存储在集合中 * 4.将集合中的内容写到文本文件 * 注:3,4步骤也可以合并成一个步骤 */ package ioTest.io3; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; imp

Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]问题解决

后来我发现在eclipse的Preferences -> Android -> Build中有一项“Skip packaging and dexing until export or launch....”,原来这个选项默认是被勾选的,这个选项的意思是“跳过packing和dexing,直到export或者 launch...”,去掉这个选项即可解决问题. Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]问题解决

列出某个目录下的所有Java文件

import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test; public class ListFile { public void listJavaFile(String fileName) { File file = new File(fileName);

使用 NIO.2 遍历目录下所有的Java文件

package wellGrounded; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFil

Go实现查找目录下(包括子目录)替换文件内容

[功能] 按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换. [缺陷] 1. 没有过滤出文本文件 2. 当文件过大时,效率不高 [代码] package main import ( "flag" "fmt" "io/ioutil" "os" "path/filepath" "strings" ) type ReplaceHelper struct { R

shell脚本第二篇——将指定目录下大于200K的文件移动到/tmp下

shell脚本第二篇--将指定目录下大于200K的文件移动到/tmp下 # vim  /tmp/files.sh #!/bin/bash #将指定目录下大于200K的文件移动到/tmp下 read  -p  "请输入您要将目录下大于200K文件移动的目录路径:" $1 for FILE in `ls  $1` do if [ -f  $FILE ] ; then if [ `ls -l $FILE | awk `{print $5}` -gt 204800 ] ; then mv  $