遍历包中的所有java类
2014-04-16 20:58
260 查看
如何对java的一个package进行遍历,本片文章只介绍package中含有子package和jar文件的两种情况,其他情况不在本文章的考虑范围内。
1,含有子package的情况。
把package中的“.”换成“\”,然后把对包的遍历变成的目录的遍历,对目录中的文件判断后缀“.class”。
代码如下:
View Code
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
相关文章推荐
- java中的排序
- Java类的特点——封装
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- 程序员不可不知的eclipse操作快捷键
- 关于Cookie的使用
- Java反射,根据类名创建带参数的实例(获取参数类型,参数等)
- eclipse中最常用的快捷键
- 【转】java序列化技术
- java数组并集/交集/差集(补集)
- java UNIX时间戳的应用
- struts2的配置
- Eclipse快捷键大全
- 精选30道Java笔试题解答
- JAVA压缩Gzip
- struts2 登录(无验证)
- eclipse php
- JNI层 C如何掉用java接口
- Java中两种区别不同类型Exception的方法
- java 读写excle
- Java学习路线