java项目取包名_通过项目下的包名获取包下的全部类

通过项目下的包名获取包下的全部类

public class GetClasses {

public static Set> classes = new HashSet<>();

public static void main(String[] args) {

GetAllClass("com.bihang.seayatest.nio");

System.out.println(classes.size());

}

public static void GetAllClass(String packageName){

Enumeration dirs = null;

try {

dirs = Thread.currentThread().getContextClassLoader().getResources(packageName.replace(".","/"));

} catch (IOException e) {

e.printStackTrace();

}

while (dirs.hasMoreElements()){

//获取物理路径

String filePath = dirs.nextElement().getFile();

addPathToClasses(filePath,packageName,classes);

}

}

public static void addPathToClasses(String classPath, String rootPackageName, Set> classes) {

File file = new File(classPath);

if (!file.exists() && !file.isDirectory())

return;

if (file.isDirectory()) {

File[] list = file.listFiles();

//如果是文件夹就需要在包名后面添加文件名

for (File path :

list) {

if (path.isDirectory())

addPathToClasses(path.getAbsolutePath(), rootPackageName+"."+path.getName(), classes);

else

addPathToClasses(path.getAbsolutePath(), rootPackageName, classes);

}

} else {

if (file.getName().endsWith(".class")){

String className = file.getName().substring(0,

file.getName().length() - 6);

try {

classes.add(Thread.currentThread().getContextClassLoader().loadClass(rootPackageName + '.'+ className));

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

}

}

}

getName()方法

返回文件名称,包括后缀.

list()方法

返回文件名的数组,是String的数组。

listFiles()方法

返回文件的数组,也就是绝对路径的数组。

accept()方法

listFiles()方法会为此目录对象下的每一个文件名调用accpet()方法,来判断该文件是否包含在内,判断结果由accept()方法返回的布尔值表示。

exists()

创建之前,要通过file.exists()判断该文件或者文件夹是否已经存在,如果返回true,是不能创建的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值