private static HdSpringUtils instance = null; //根據包路徑 讀取文件 : 將文件存入到容器中 //容器可以是list或者map public static Map<String, String> classMap = new HashMap<>(128); /** * 掃描類文件到map容器中: * 根據包路徑 + 文件名 ===》 get 什麼 * @param packageName */ public void doScan2Map(String packageName) { String temp = packageName.replaceAll("\\.", "/"); URL url = this.getClass().getClassLoader().getResource(temp); /** * 文件路徑 */ //System.out.println(url);// File file = new File(url.getFile()); for (File f : file.listFiles()) { if(f.isDirectory()) { doScan2Map(packageName + "." + f.getName()); } else { if(!f.getName().endsWith(".class")) { continue; } else { String clazzName = packageName + "." + f.getName().replaceAll(".class",""); classMap.put(clazzName, null); } } } } private void doScanner(String scanPackage) { URL url = this.getClass().getClassLoader().getResource(scanPackage.replaceAll("\\.","/")); File classDir = new File(url.getFile()); for (File file : classDir.listFiles()) { if(file.isDirectory()){ doScanner(scanPackage + "." + file.getName());}else { if(!file.getName().endsWith(".class")){continue;} String clazzName = (scanPackage + "." + file.getName().replace(".class","")); classMap.put(clazzName,null); } } } private void doScanner2(String scanPackage) { URL url = this.getClass().getClassLoader().getResource(scanPackage.replaceAll("\\.","/")); File classDir = new File(url.getFile()); for (File file : classDir.listFiles()) { if(file.isDirectory()){ doScanner(scanPackage + "." + file.getName());}else { if(!file.getName().endsWith(".class")){continue;} String clazzName = (scanPackage + "." + file.getName().replace(".class","")); classMap.put(clazzName,null); } } } public static void main(String[] args) throws Exception { String s = "G:/my_maven_workspace_git/javaSpaceForGupao/homework/proxy/target/classes/com/hongdu"; URL url = HdSpringUtils.class.getClassLoader().getResource(""); System.out.println(url); //file:/G:/my_maven_workspace_git/javaSpaceForGupao/homework/proxy/target/classes/ URL url1 = HdSpringUtils.class.getResource(""); System.out.println(url1); //file:/G:/my_maven_workspace_git/javaSpaceForGupao/homework/proxy/target/classes/com/hongdu/gupao/spring/utils/ URL url2 = HdSpringUtils.class.getResource("/"); System.out.println(url2); //file:/G:/my_maven_workspace_git/javaSpaceForGupao/homework/proxy/target/classes/ URL url3 = HdSpringUtils.class.getResource("/com/hongdu"); System.out.println(url3); System.out.println(url3.getFile()); File file = new File(url3.getFile()); System.out.println("文件遍歷開始---------------------------------------"); HdJavaEveUtils.printFiles(file); System.out.println("文件遍歷結束---------------------------------------"); //file:/G:/my_maven_workspace_git/javaSpaceForGupao/homework/proxy/target/classes/com/hongdu URL url4 = HdSpringUtils.class.getResource("/com/hongdu"); System.out.println(url4); HdSpringUtils instance = new HdSpringUtils(); System.out.println("----------------------------------ClassLoader加載得到的路徑開始----------"); URL url5 = instance.getThisUrl(); System.out.println(url5); // HdSpringUtils.getInstance().doScan2Map("com.hongdu"); // HdJavaEveUtils.printMap(classMap); } /** * * @return */ private URL getThisUrl() { /** * classLoader : 相對路徑 前面不能加斜槓 */ URL url5 = this.getClass().getClassLoader().getResource("com/hongdu" ); return url5; } public static HdSpringUtils getInstance() { if(instance == null) { instance = new HdSpringUtils(); return instance; } return instance; } public HdSpringUtils() {} /** * 掃描到 list中 不太合適, 因爲要用到的時候查找太慢了! * @param packageName */ public static void doScan2List(String packageName) { } @Test public void test() { System.out.println(this.getClass().getClassLoader().getResource("")); String packageName = "com.hongdu"; System.out.println(packageName.replaceAll("\\.", "/")); System.out.println(packageName); doScan2Map(packageName); HdJavaEveUtils.printMap(classMap); } @Test public void scanPackageTest() { System.out.println(this.getClass().getClassLoader().getResource("")); String packageName = "com.hongdu"; System.out.println(packageName.replaceAll("\\.", "/")); System.out.println(packageName); doScanner(packageName); HdJavaEveUtils.printMap(classMap); } @Test public void scanPackage2Test() { System.out.println(this.getClass().getClassLoader().getResource("")); String packageName = "com.hongdu"; System.out.println(packageName.replaceAll("\\.", "/")); System.out.println(packageName); doScanner2(packageName); HdJavaEveUtils.printMap(classMap); } @Test public void test03() { System.out.println(this.getClass().getClassLoader().getResource("")); doScan2Map("com.hongdu"); HdJavaEveUtils.printMap(classMap); } @Test public void enumTest() { System.out.println(FileSuffixType.valueOf(FileSuffixType.SQL.getSuffix())); }
讀取包路徑--》獲得類文件的包名+類名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.