使用Class.getResource和ClassLoader.getResource方法获取文件路径
2024-10-15 11:32:56
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记。主要使用Class及通过ClassLoader来动态获取文件路径。
查阅链接如下: Class及ClassLoader下获取Resource原理
Class及ClassLoader下获取Resource图文解析
首先,在IDE下面写的.java文件最终会被编译成一个.class的类。上面两种方法去读取文件都是基于.class的相对路径进行索引。
通过Class和ClassLoader两个类下的Resource方法获取路径主要区别是参数是否以"/"开头。
1. 通过Class.getResource方法获取文件路径
△getResource方法
(1) getResource方法必须输入参数,该方法没有提供空参数的方法重载,因此该方法必须输入参数。
(2) Class.getResource("")与Class.getResource("/") 的主要区别:空字符串下对应返回class文件所在包的位置,"/"参数返回的是class文件所在的根目录(所在包的上级目录)
2. 通过ClassLoader.getResource方法获取文件路径
ClassLoader.getResource方法同样带有一个String 类型的目录参数,但ClassLoader.getResource方法参数不支持参数为"/",因为该实例方法返回的就是类所在的根目录路径。输入带"/"开头的字符串,会返回null。
3. 示例以JDBCHelper类,分别获取1.xml,2.xml 及dbcfg.properties文件
文件分布如图所示:
@Test
public void testFilePath() throws Exception
{
// 以class.getResource方法获取文件路径
System.out.println("------getFileURL by class.getResource------");
URL fileURL = JDBCHelper.class.getResource("1.xml");
System.out.println("1.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getResource("/2.xml");
System.out.println("2.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getResource("/config/dbcfg.properties");
System.out.println("properties Exit? " + isfileExit(fileURL));
System.out.println("------getFileURL by classLoader.getResource------"); fileURL = JDBCHelper.class.getClassLoader().getResource("com/scl/test/transcaction/1.xml");
System.out.println("1.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getClassLoader().getResource("2.xml");
System.out.println("2.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getClassLoader().getResource("config/dbcfg.properties");
System.out.println("properties Exit? " + isfileExit(fileURL)); } public boolean isfileExit(URL fileURL) throws Exception
{
if (fileURL == null) { return false; }
String URLStr = URLDecoder.decode(fileURL.getFile(), "utf8");
File f = new File(URLStr);
if (f != null && f.exists())
{
f = null;
return true;
}
else
{
return false;
} }
结果如下:
以上为getResource方法的总结,看来基础还是得加强
最新文章
- jquery:validate的例子
- Allegro 中手动制作螺丝孔封装
- Android拓展系列(9)--Android视频录制screenrecord命令
- c++primerplus(第六版)编程题——第5章(循环和关系表达式)
- XMLHttpRequest state以及readystate的对应值
- EL表达式学习
- CSS3中设置字体的抗锯齿或光滑度的属性
- Rainbond v5.1.2发布,微服务架构应用便捷管理和交付
- Thinkpad L440 无线驱动突然无法使用,无法搜索到无线上网
- Dethe is my Finaunce金融
- laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy
- metaq架构原理
- 《You dont know JS》原生函数
- 重装Win7后找回Ubuntu启动项并在Ubuntu中修复引导
- IntelliJ IDEA部署tomcat时Edit Configuration无artifact选项
- Django基础学习一
- PostgreSQL与MySQL的区别收集(转)
- WEBPACK &; BABEL 打包项目
- SQL多表连接查询(具体实例)
- nginx 反向代理做域名转发简单配置