如何读取资源文件夹中的文件

时间:2019-01-01 15:37:59

标签: java embedded-resource

这里是Java和IntelliJ新手。很抱歉,如果已经回答了这个问题,但我似乎找不到答案。

我的项目结构如下所示:

project

我正在尝试弄清楚如何以单个字符串读取高亮显示的storedQueries.txt文件的内容。这必须很简单,我尝试了很多涉及getClass的方法,等等,但是到目前为止没有任何效果。希望得到任何指导,谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用当前的类加载器读取文件,但是在此之前,您需要对结构进行一些整理。当您使用ClassLoader读取文件时,默认情况下,它会查找它所属的同一软件包。

第1步:创建新软件包com.pe.queries
步骤2:在上述包中创建类Package-Info.java
步骤3:在resources下以resources/com/pe/queries的形式创建新的嵌套目录,并将文件移至该目录。
第4步:最后,您应该能够将文件读取为 Package-Info.class.getResource("storedQueries.txt");

答案 1 :(得分:0)

getClass().getResource("/resources/etc.txt")

将资源文件夹放入目标

答案 2 :(得分:0)

有两种获取资源的方法:

  1. 通过绝对路径进行操作,但这不是一个好方法,因为它导致绝对路径不可靠,但是对于“烟雾”测试很有用
  2. 通过相对路径,再次有两种方法。

两种方式都可以使用getClass().getResource(path)构造。

相对路径:

  1. 如果您的资源位于资源目​​录的“根目录”中,则路径应以/开头: "/etc.txt" 文件etc.txt存储在资源目录中的位置。

以图片为例,您的路径为:/queries/storedQueries.txt

  1. 如果您的资源位于资源目​​录中,但位于扁平目录中,则与您调用.getResource(path)的类的包相同,例如:

resources/com/pe/queries/etc.txt

您的路径不应包含开始的'/': getClass().getResource("com/pe/queries/etc.txt")

这是因为,当您的构建系统(您的maven)将构建项目时,如果将其存储在资源目录的root中,或者将其存储为{{1 }},在jar resources/com/pe/queries/etc.txt内创建并将其放入其中。

对不起,我的英语,希望我能帮助您了解它的工作原理。

P.S。我写了这篇文章,是俄文的,但是您可以通过Google-transate进行翻译(我尝试过并且很容易理解),里面还有更多的示例和解释。

Article about resources on Russian

祝你好运!