根据项目需要,我近期学习如何根据包名遍历该包下的路径,在我的不懈努力下,我网上找到了一遍不错的文章,稍微做处理,然后分享给大家,希望对大家有帮助。
文章来源:https://zhidao.baidu.com/question/590433618.html
package com.xt.test;
import java.io.File;
import java.net.URL;
import java.util.Enumeration;
public class Test{
public Test() {
getObjecsInPackage("com.xt.model");
}
public static void main(String[] args) {
new Test();
}
/**
* 根据指定的包,遍历其包下的类,并且输出
* @param packName 遍历该包下的类
*/
public static void getObjecsInPackage(String packName){
// Set<Object> objs = new HashSet<Object>();
String packageName = packName;
String packageDirName = packageName.replace(".", "/");
Enumeration<URL> dirs = null;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
//迭代此Enumeration
while(dirs.hasMoreElements()){
URL url = dirs.nextElement();
File file = new File(url.getFile());
//把目录下的所有文件列出
String[] classes = file.list();
for(String className:classes){
className = className.substring(0, className.length()-6);
String qName = packageName+"."+className;
System.out.println("qName="+qName);
//如果有必要,可以创建对象,但是由于一般一个包
//下有很多个类,所有建议把创建的对象放到一个集合里,
//在这里不就演示了(注释掉的代码在下面)
// Object obj = Class.forName(qName).newInstance();
// objs.add(obj);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
1、com.xt.model包下的文件结构
2、测试运行,输出结果如下:
本文借鉴别人的技术分享,希望能对你们有所帮助,也希望大家支持我,我后面会有更多更好的技术跟大家分享!