importjava.io.BufferedReader;importjava.io.File;importjava.io.FileFilter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Enumeration;importjava.util.regex.Pattern;importjava.util.zip.ZipEntry;importjava.util.zip.ZipException;importjava.util.zip.ZipFile;public classFind {public static final String path = "D:/workspace/test/"; //jar包父目录
public static final String keywords = "aaa"; //关键字
public static voidmain(String[] args){
File file= newFile(path);final Pattern p = Pattern.compile(".+\\.jar$");
File[] files= file.listFiles(newFileFilter() {
@Overridepublic booleanaccept(File pathname) {if(p.matcher(pathname.getPath()).matches()){return true;
}else{return false;
}
}
});
search(files);
}private static voidsearch(File[] files){try{for(File f : files){if(f.isDirectory()){
search(f.listFiles());
}else{
ZipFile jar= newZipFile(f);
Enumeration enumration=jar.entries();while(enumration.hasMoreElements()){
ZipEntry zipEntry=(ZipEntry)enumration.nextElement();
InputStreamReader isr= newInputStreamReader(jar.getInputStream(zipEntry));
BufferedReader br= newBufferedReader(isr);
String line=br.readLine();int line_num = 1;while(null !=line){//System.out.println(line);
if(line.contains(keywords)){
System.out.println(f.getPath()+ "," +zipEntry.getName() + "," + "line number = " +line_num);
}
line=br.readLine();
line_num++;
}
}
}
}
}catch(ZipException z_e){
z_e.printStackTrace();
}catch(IOException io_e){
io_e.printStackTrace();
}
}
}