All pastes #938768 Raw Edit

Zeug

public java v1 · immutable
·published 2008-03-11 21:13 UTC
rendered paste body
import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Set;import java.util.Map.Entry;import com.zynamics.io.FileUtils;public class CheckSummer{	private final HashMap<Long, ArrayList<File>> fileSizes = new HashMap<Long, ArrayList<File>>();		private final HashMap<String, ArrayList<File>> md5s = new HashMap<String, ArrayList<File>>();		private final HashMap<String, ArrayList<File>> md5s2 = new HashMap<String, ArrayList<File>>();		public static void main(String[] args)	{		CheckSummer cs = new CheckSummer();				cs.traverse(new File("F:\\@@"));				try {			cs.md5_first();			cs.md5_second();		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				cs.print();	}	private void print()	{		Set<Entry<String, ArrayList<File>>> values = md5s2.entrySet();				for (Entry<String, ArrayList<File>> e : values)		{			if (e.getValue().size() == 1)			{				continue;			}						System.out.println("Equal");						for (File f : e.getValue()) {				System.out.println(f.getAbsolutePath());			}		}	}	private void md5_second() throws IOException	{		Set<Entry<String, ArrayList<File>>> values = md5s.entrySet();				for (Entry<String, ArrayList<File>> e : values)		{			if (e.getValue().size() == 1)			{				continue;			}						for (File file : e.getValue())			{				String md5 = FileUtils.calcMD5(file);								if (md5s2.containsKey(md5))				{					md5s2.get(md5).add(file);				}				else				{					ArrayList<File> list = new ArrayList<File>();										list.add(file);										md5s2.put(md5, list);				}			}						//md5s.remove(e.getKey());		}	}	private void md5_first() throws IOException	{		Set<Entry<Long, ArrayList<File>>> values = fileSizes.entrySet();				for (Entry<Long, ArrayList<File>> e : values)		{//			System.out.println(e.getValue().size());			if (e.getValue().size() == 1)			{				continue;			}						for (File file : e.getValue())			{				byte[] data = FileUtils.readFile(file, 100);								String md5 = FileUtils.calcMD5(data);				//				System.out.printf("%s has size %s\n", file.getAbsoluteFile(), md5);								if (md5s.containsKey(md5))				{					md5s.get(md5).add(file);				}				else				{					ArrayList<File> list = new ArrayList<File>();										list.add(file);										md5s.put(md5, list);				}			}						//fileSizes.remove(e.getKey());		}	}	private void traverse(File directory)	{		File[] files = directory.listFiles();				for (File file : files)		{			if (file.isDirectory())			{				traverse(file);			}			else			{				long length = file.length();								System.out.printf("%s has size %d\n", file.getAbsoluteFile(), length);								if (fileSizes.containsKey(length))				{					fileSizes.get(length).add(file);				}				else				{					ArrayList<File> list = new ArrayList<File>();										list.add(file);										fileSizes.put(length, list);				}			}		}	}}