关于resources的若干问题详解

发布时间 2023-09-05 17:28:40作者: 孤独斗士

问题1   resources文件夹下又创建了一个文件夹,但是在生成的时候,该文件夹未生成只在根目录生成了资源文件?

网上找了一大堆资料,没解决,最后试着改了改pom.xml文件,原来是在build节点上出的问题。

<build>
<resources>
<!--两个resource节点都加上吧,如果你两个目录下都有配置文件的话。只加一个resource节点,只会编译这个节点配置的目录下的xml,properties文件-->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>识别resources下的properties文件
            <include>**/*.txt</include>识别txt文件
                <include>**/*</include>识别所有文件,包含文件夹(问题就在这里,原来没有加这一句,文件夹就不生成)
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.fxml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>

问题2 获取resources文件夹下的路径

1、Class.getResource()的获取资源路径

  • 如果以 / 开头,则从根路径开始搜索资源。
  • 如果不以 / 开头,则从当前类所在的路径开始搜索资源。

2、ClassLoader.getResource()的资源获取不能以 / 开头,统一从根路径开始搜索资源

1
String path = this.getClass().getClassLoader().getResource("xxx").getPath();

通过这个代码获得。如果方法是在static中,则通过类名本身获得,因为this不能用在static方法中,会报错。

使用Class的getResourceAsStream

URL resourceUrl = ResourcePath.class.getResource("/test.txt");