码上敲享录 > java入门知识分享 > java如何以件的形式来获取包下的所有Class文件

java如何以件的形式来获取包下的所有Class文件

上一章章节目录下一章 2017-11-13已有1570人阅读 评论(0)

java如何以件的形式来获取包下的所有Class文件?


完美解决方法:

//包的路径

String  packageName="com.bxsurvey.sys.process.controller";

//包在电脑的物理路径

String  packagePath="/E:/item2015/DGSYS/WebRoot/WEB-INF/classes/com/bxsurvey/sys/process/controller";


public List<Class<?>> findAndAddClassesInPackageByFile(String packageName, String packagePath, final boolean recursive){  

        List<Class<?>> classes = new ArrayList<Class<?>>();  

       //获取此包的目录 建立一个File  

       File dir = new File(packagePath);  

       //如果不存在或者 也不是目录就直接返回  

       if (!dir.exists() || !dir.isDirectory()) {  

           return;  

       }  

       //如果存在 就获取包下的所有文件 包括目录  

       File[] dirfiles = dir.listFiles(new FileFilter() {  

       //自定义过滤规则 如果可以循环(包含子目录) 或则是以.class结尾的文件(编译好的java类文件)  

             public boolean accept(File file) {  

               return (recursive && file.isDirectory()) || (file.getName().endsWith(".class"));  

             }  

           });  

       //循环所有文件  

       for (File file : dirfiles) {  

           //如果是目录 则继续扫描  

           if (file.isDirectory()) {  

               findAndAddClassesInPackageByFile(packageName + "." + file.getName(),  

                                     file.getAbsolutePath(),  

                                     recursive,  

                                     classes);  

           }  

           else {  

               //如果是java类文件 去掉后面的.class 只留下类名  

               String className = file.getName().substring(0, file.getName().length() - 6);  

               try {  

                   //添加到集合中去  

                   classes.add(Class.forName(packageName + '.' + className));  

               } catch (ClassNotFoundException e) {  

                   e.printStackTrace();  

               }  

           }  

       }  

   }  


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交