在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
import java.io.File;
import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ClassFinder { public String className; public List<String> jarFiles = new ArrayList<String>(); public ClassFinder() { } public ClassFinder(String className) { this.className = className; } public void setClassName(String className) { this.className = className; } /** * Return the list of dir * * @param dir * the directory to find * @param recurse * whether recurse * @return */ public List<String> findClass(String dir, boolean recurse) { searchDir(dir, recurse); return this.jarFiles; } private int count = 0; protected void searchDir(String dir, boolean recurse) { File d = new File(dir); if (!d.isDirectory()) { return; } File[] files = d.listFiles(); for (int i = 0; i < files.length; i++) { if (recurse && files[i].isDirectory()) { searchDir(files[i].getAbsolutePath(), true); } else { String filename = ""; try { filename = files[i].getAbsolutePath(); // System.out.println("filename is: " + filename); if (filename.endsWith(".jar") || filename.endsWith(".zip")) { count++; if (count % 100 == 0) { System.out.println("search files:" + count); } ZipFile zip = new ZipFile(filename); Enumeration<? extends ZipEntry> entries = zip.entries(); while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); String thisClassName = getClassName(entry); // System.out.println(thisClassName); if (thisClassName.equals(this.className) || thisClassName.equals(this.className + ".class") || thisClassName.endsWith(className) || thisClassName.endsWith(className + ".class")) { this.jarFiles.add(filename); } } } else { if (filename.equals(this.className) || filename.equals(this.className + ".class") || filename.endsWith(className) || filename.endsWith(className + ".class")) { this.jarFiles.add(filename); } } } catch (Exception e) { System.out.println("this one is not good:" + filename); e.printStackTrace(); } } } } public List<String> getFilenames() { return this.jarFiles; } protected String getClassName(ZipEntry entry) { StringBuffer className = new StringBuffer(entry.getName().replace('/', '.')); return className.toString(); } public static final String PLUG_IN_PATH = "C:\\"; public static void main(String args[]) { ClassFinder findInJar = new ClassFinder("NwTrace"); List<String> jarFiles = findInJar.findClass(PLUG_IN_PATH, true); System.out.println(findInJar.className); if (jarFiles.size() == 0) { System.out.println("Not Found"); } else { for (int i = 0; i < jarFiles.size(); i++) { System.out.println(jarFiles.get(i).replace('\\', '/')); } } } } |
请发表评论