⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grandfileaccumulator.java

📁 java开发的 图片比较程序
💻 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 + -