java 获取java文件路径_Java怎么获取相对路径下所有的.java文件的信息
理论上不能,因为java可能动态创建并加载类.
实践上是可能, 假设你不动态创建类, 或动态创建也由你的ClassLoader来处理,或可能忽略那些不是你创建的类
则用Guava反射的方式:Reflections reflections = new Reflections("com.wy.evolution.framework.controller"); Set> allClasses =
reflections.getSubTypesOf(Object.class);
//或者用
ClassPath.getTopLevelClasses(String packageName)扫描classpath的方式:
/**
* Scans all classes accessible from the context class loader which belong to the given package and subpackages.
*
* @param packageName The base package
* @return The classes
* @throws ClassNotFoundException
* @throws IOException
*/
private static Class[] getClasses(String packageName)
throws ClassNotFoundException, IOException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
assert classLoader != null;
String path = packageName.replace('.', '/');
Enumeration resources = classLoader.getResources(path);
List dirs = new ArrayList();
while (resources.hasMoreElements()) {
URL resource = resources.nextElement();
dirs.add(new File(resource.getFile()));
}
ArrayList classes = new ArrayList();
for (File directory : dirs) {
classes.addAll(findClasses(directory, packageName));
}
return classes.toArray(new Class[classes.size()]);
}
/**
* Recursive method used to find all classes in a given directory and subdirs.
*
* @param directory The base directory
* @param packageName The package name for classes found inside the base directory
* @return The classes
* @throws ClassNotFoundException
*/
private static List findClasses(File directory, String packageName) throws ClassNotFoundException {
List classes = new ArrayList();
if (!directory.exists()) {
return classes;
}
File[] files = directory.listFiles();
for (File file : files) {
if (file.isDirectory()) {
assert !file.getName().contains(".");
classes.addAll(findClasses(file, packageName + "." + file.getName()));
} else if (file.getName().endsWith(".class")) {
classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));
}
}
return classes;
}
java 获取java文件路径_Java怎么获取相对路径下所有的.java文件的信息相关推荐
- java如何获取文件路径_java如何获取文件路径
第一种:File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...
- java资源文件路径_Java 中获取资源(文件)的路径问题总结
Java 中获取资源(文件)的路径问题总结 首先,Java 中获取资源大体上可分为两种方式,基于 文件系统的 和 基于classpath的. 1. 基于文件系统的相对简单. 比如 构造一个File f ...
- java代码获取项路径_Java中获取各种路径的方法盘点
Java代码中获取路径 假设当前项目路径为:D:/wunian/workspace/JavaProject,现在来分别获取此项目中的各种路径. 1.获取资源文件(.class文件)所在路径(四种方式) ...
- java application 路径_java项目获取根路径(web项目和application项目的区分)
Java项目中经常要读取配置文件,涉及到读取配置文件的地方,就会要读定位文件的路径.因此,在项目如何正确获取文件路径尤为关键. 根据不同的java项目,在获取文件路径时候有一些 小区别 测试环境:E: ...
- java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法
public class MyUrlDemo { public static void main(String[] args) { MyUrlDemo muDemo = new MyUrlDemo() ...
- java exe 路径_Java程序获取执行自己的java.exe路径
首先通过:java.lang.management包提供的接口获取当前进程ID:接下来利用wmic命令根据进程ID获取进程exe的目录.代码如下: /** * Windows下获取运行当前程序的jav ...
- 在java中图片路径_java中获取图片路径三中方法
java中获取图片路径的方法 //获取路径三中方法 //+ f.getOriginalFilename(); //String filedir = Thread.currentThread().get ...
- java获取泛型的类型_Java反射获取泛型类型
public class Person{ }importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;public ...
- java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势
image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...
- java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化
Java7对NIO进行了大的改进,新增了许多功能: •对文件系统的访问提供了全面的支持 •提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的 ...
最新文章
- 【数学专题】矩阵乘法
- ajax invoke error,配置全局的异常捕获时,走ajax请求下面报错
- Centos6 安装NTP 4.2.8 服务器
- Design Compiler指南——概述和基本流程
- 【转】怎么样从一个疯狂下载者成为一个学习者!!!值得反省下的问题·~~
- 为什么我建议每个开发人员都需要学Python?不看会后悔!
- 为什么TCP连接不可靠
- OCR文字识别技术总结(二)
- Android开发之数据库Sqlite
- 第22节 软件工程知识
- 【log4cpp_学习】2_log4cpp配置文件的使用
- php识别手写图片,可识别手写字体的文字识别软件(附源码)
- windows meson ,ninja安装以及vs2017编译 libnice
- 华为网络设备SSH连接
- 微信小程序云开发———云存储
- java -- 百度API 接口使用
- C++中模板的特化与偏特化
- Extending Air
- C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
- unity的ui跟随鼠标移动
热门文章
- 可在广域网部署运行的QQ高仿版 -- GG叽叽(开源)
- centos6.4安装java,CentOS6.4下YUM安装MySQL和JDK和Tomcat
- python 博弈论 库_SHAP:Python的可解释机器学习库
- mybatis对mysql if函数_Mybatis使用mysql函数if出现错误
- 如何删除oracle用户数据库用户,oracle删除指定用户的原数据库,建立该用户的新数据库...
- 树莓派文件服务器nas,树莓派搭建NAS服务器
- linux Fedora安装桌面,CentOS6.x\Red Hat\Fedora\Linux 安装Wine 1.7.48 桌面运行环境教程
- 第十六届全国大学生广东赛区线上比赛流程规范
- 新车模、新舵机、新体验
- 这也不能一直在这儿瞎忙活