您的位置:首页 > 编程语言 > Java开发

遍历包中的所有java类

2014-04-16 20:58 260 查看
如何对java的一个package进行遍历,本片文章只介绍package中含有子package和jar文件的两种情况,其他情况不在本文章的考虑范围内。

1,含有子package的情况。

把package中的“.”换成“\”,然后把对包的遍历变成的目录的遍历,对目录中的文件判断后缀“.class”。

代码如下:

/*
* 返回jar中的所有子类的类名
* jarPath: 要遍历的jar包
* childPack: 是否需要对子包进行遍历。true,遍历;false,不遍历。
* */
private static List<String> getClassNameByJar(String jarPath,boolean childPackage){
List<String> myClassName = new ArrayList<String>();
String[] jarInfo = jarPath.split("!");
String jarFilePath = jarInfo[0].substring(jarInfo[0].indexOf("/"));
String packagePath = jarInfo[1].substring(1);
try{
JarFile jarFile = new JarFile(jarFilePath);
Enumeration<JarEntry> entrys = jarFile.entries();
while(entrys.hasMoreElements()){
JarEntry jarEntry = entrys.nextElement();
String entryName = jarEntry.getName();
if(entryName.endsWith(".class")){
if(entryName.startsWith(packagePath)){
entryName=entryName.replace("/",".").substring(0,entryName.lastIndexOf("."));
myClassName.add(entryName);
}
}else{
int index = entryName.lastIndexOf("/");
String myPackagePath;
if(index != -1){
myPackagePath = entryName.substring(0,index);
}else {
myPackagePath = entryName;
}
if(myPackagePath.equals(packagePath)){
entryName = entryName.replace("/",".").substring(0,entryName.lastIndexOf("."));
myClassName.add(entryName);
}
}
}
}catch (Exception e){
e.printStackTrace();
}
return myClassName;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: