📄 grandfileaccumulator.java
字号:
package filelogic.analyzers;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Iterator;import java.util.TreeMap;import java.util.Vector;import java.util.zip.CRC32;import java.util.zip.CheckedInputStream;public final class GrandFileAccumulator { private TreeMap<String, Vector<File>> completeCRCAndFileList; private Vector<File> files; public GrandFileAccumulator(String folderpath) throws IOException { File dir = new File(folderpath); files = new Vector<File>(); if (folderpath == null) { throw new NullPointerException( "You cannot anylize a null directory"); } else if (dir.exists() == false || dir.isDirectory() == false) { throw new IOException( "You must specify a real directory to analyze"); } else { completeCRCAndFileList = new TreeMap<String, Vector<File>>(); // Add each file and its hash code into the treemap. RecursiveDirectoryParse(folderpath); } // Add each file and its hash to the tree. for (File current : files) { CheckedInputStream ci = new CheckedInputStream(new FileInputStream( current), new CRC32()); // Hash the whole file, or just 1MB. byte[] buffer = new byte[(int) Math.min(current.length(), Math.pow( 2, 20))]; ci.read(buffer); String key = Long.toString(ci.getChecksum().getValue()); if (completeCRCAndFileList.containsKey(key)) { completeCRCAndFileList.get(key).add(current); } else { completeCRCAndFileList.put(key, new Vector<File>()); (completeCRCAndFileList.get(key)).add(current); } } } private void RecursiveDirectoryParse(String directory) { Vector<File> folders = new Vector<File>(); File dir = new File(directory); File[] files = dir.listFiles(); // Seperate into files... for (int k = 0; k < files.length; k++) { if (files[k].isDirectory()) folders.add(files[k]); else { this.files.add(files[k]); } } for (Iterator k = folders.iterator(); k.hasNext();) { RecursiveDirectoryParse(((File) k.next()).getPath()); } } public TreeMap<String, Vector<File>> getFilesAndHashes() { return completeCRCAndFileList; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -