使用File获取resources里面资源文件的相对路径

本文介绍了一种在Java应用程序中从resources文件夹读取city.json文件的方法。通过使用getClass().getResource()方法,可以定位到资源文件并创建File对象以便进行进一步的IO操作。

大概类似这样的目录


要在CityService中获取resources中的city.josn

可以这样写

File file = new File(this.getClass().getResource("/city.josn").getPath());
这样就可以用IO打开resources里面的文件了


### Java 获取 `resources` 文件夹下指定文件路径的方法 在Java项目中,获取位于`resources`目录下的文件路径是一个常见的需求。通过使用类加载器(ClassLoader)和类对象(Class),可以方便地访问这些资源。 #### 使用 ClassLoader 获取资源文件路径 当需要获取相对路径中的资源时,推荐使用`ClassLoader.getResource()`方法: ```java URL resourceUrl = Thread.currentThread().getContextClassLoader().getResource("example.txt"); if (resourceUrl != null) { Path path = Paths.get(resourceUrl.toURI()); System.out.println(path.toString()); } else { System.err.println("Resource not found!"); } ``` 此代码片段展示了如何利用线程上下文类加载器来定位名为`example.txt`的文件并打印其绝对路径[^1]。 对于打包成JAR的情况,上述方法同样适用,因为`ClassLoader`能够处理jar包内部的资源位置转换[^2]。 #### 利用 Class 对象获取资源文件路径 另一种常见的方式是借助于特定类所在的类加载器,这通常更为直观: ```java URL resourceUrl = MyClass.class.getClassLoader().getResource("example.txt"); if (resourceUrl != null) { String filePath = resourceUrl.getFile(); System.out.println(filePath); } else { System.err.println("Resource not found!"); } ``` 这种方式适用于大多数场景,并且可以直接作用于任意类定义上,而不仅仅是主线程的上下文类加载器。 需要注意的是,在某些特殊情况下,比如IDE环境与构建工具配置差异可能导致实际运行效果不同。因此建议开发者测试不同的部署环境下该逻辑的表现[^3]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值