根據項目需要,我近期學習如何根據包名遍歷該包下的路徑,在我的不懈努力下,我網上找到了一遍不錯的文章,稍微做處理,然後分享給大家,希望對大家有幫助。
文章來源: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>();/<object>/<object>
String packageName = packName;
String packageDirName = packageName.replace(".", "/");
Enumeration
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包下的文件結構
![根據指定的包名遍歷該包下的類名](http://p2.ttnews.xyz/loading.gif)
com.xt.model下的文件結構圖
2、測試運行,輸出結果如下:
![根據指定的包名遍歷該包下的類名](http://p2.ttnews.xyz/loading.gif)
運行結果圖
本文借鑑別人的技術分享,希望能對你們有所幫助,也希望大家支持我,我後面會有更多更好的技術跟大家分享!
閱讀更多 goonmydream 的文章