一个用于在一堆zipjar文件中查找某一个类的程序

    技术2022-05-11  62

    作者: sonymusic 标题: 一个用于在一堆zip/jar文件中查找某一个类的程序 关键字: Java Zip 查找 分类: 示例代码 密级: 公开 (评分: , 回复: 0, 阅读: 142)  »»

    可随意转载,但请注明出处及作者 SonyMusic 2003.05.28 ========================================================================== 一个用于在一堆zip/jar文件中查找某一个类的程序 package sony.utils; import java.util.jar.*; import java.util.zip.*; import java.util.*; import java.io.*; /**  * @author SonyMusic  *  * 很简单,但可能会很有用的程序,用于在指定目录下的所有zip/jar文件中查找某个类.<br>  * 至少我觉得是用的,呵呵。有时面对着jrun那一堆.jar文件中,想找到某个类还真不容易。<br>  * <b>usage:</b> java sony.utils.FindClass baseDir className  */ public class FindClass {  public static void main(String[] args) {    if(args.length!=2){      printUseage(-1);      return;    }    File base=new File(args[0]);    if(!base.exists()){      System.out.println("Base Dir not exist!");      printUseage(-2);    }    if(!base.isDirectory()){      System.out.println("Base Dir is a file!");      printUseage(-3);    }    List zipList=getSubJarFiles(base);    ZipFile zfile=null;    try {      int fCount=0;      for (int i = 0; i <zipList.size(); i++) {        zfile=new ZipFile((File)zipList.get(i));        Enumeration enum=zfile.entries();        while (enum.hasMoreElements()) {          ZipEntry ze = (ZipEntry) enum.nextElement();          if(matchEntry(ze, args[1])){            System.out.println("Found in zip/jar file: "+zfile.getName()+"/tFileName:"+ze.getName());            ++fCount;            break;          }        }      }      if(fCount==0){        System.out.println("not found. maybe BaseDir or ClassName is not correct.");        printUseage(0);      }      else{        System.out.println("Found "+fCount+" zip/jar file(s)");      }    }    catch (Exception e) {      e.printStackTrace();      printUseage(-10);    }  }    private static void printUseage(int retStatus){    System.out.println("useage: java sony.utils.FindClass baseDir className");    System.out.println("/tbaseDir: where you want to find. e.g. d://web//web-inf//lib");    System.out.println("/tclassName: waht you want to find. e.g. HttpServlet");    System.out.println();    System.exit(retStatus);  }    private static List getSubJarFiles(File baseDir){    List ret=new ArrayList();    //File base=new File(baseDir);    File[] tmp=baseDir.listFiles(fileFilter);    for (int i = 0; i <tmp.length; i++) {      if(tmp[i].isFile()){        ret.add(tmp[i]);      }      if(tmp[i].isDirectory()){        ret.addAll(getSubJarFiles(tmp[i]));      }    }    return ret;  }    private static boolean matchEntry(ZipEntry ze, String className){    StringTokenizer st=new StringTokenizer(ze.getName(), "/");    String fileName=null;    while (st.hasMoreTokens()) {      fileName=st.nextToken();    }    if(fileName.equals(className+".class")){      return true;    }    else return false;  }    private static FileFilter fileFilter=new FileFilter(){    public boolean accept(File pathname) {      String tmp=pathname.getName().toLowerCase();      if(tmp.endsWith(".jar") || tmp.endsWith(".zip")){        return true;      }      return false;    }  }; }


    最新回复(0)