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

Java 如何读取资源文件夹中的文件,java,embedded-resource,Java,Embedded Resource,Java和IntelliJ新手在这里。如果已经回答了,我很抱歉,但我似乎找不到答案 我的项目结构如下所示: 我正在尝试解决如何将Highlllighted storedQueries.txt文件的内容作为单个字符串读取。这一定很简单,我已经尝试了许多涉及getClass等的方法,但到目前为止没有任何效果。感谢您的指导。您可以使用当前的类加载器阅读该文件,但在此之前,您需要稍微理顺一下结构。当您使用ClassLoader读取文件时,默认情况下,它会查看它所属的同一个包 步骤1:创建新包com.p

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

我的项目结构如下所示:


我正在尝试解决如何将Highlllighted storedQueries.txt文件的内容作为单个字符串读取。这一定很简单,我已经尝试了许多涉及getClass等的方法,但到目前为止没有任何效果。感谢您的指导。

您可以使用当前的类加载器阅读该文件,但在此之前,您需要稍微理顺一下结构。当您使用ClassLoader读取文件时,默认情况下,它会查看它所属的同一个包

步骤1:创建新包
com.pe.querys

步骤2:在上面的包中创建类
Package Info.java
步骤3:在
resources
下创建新的嵌套目录,作为
resources/com/pe/querys
并将文件移动到此目录
第4步:最后,您应该能够将文件读取为
Package Info.class.getResource(“storedQueries.txt”)


将资源文件夹放在目标中有两种获取资源的方法:

  • 通过绝对路径,但这不是一个好方法,因为绝对路径是不可靠的,但它有利于“冒烟”测试
  • 通过相对路径,又有两种方法
  • 这两种方法都可以使用
    getClass().getResource(path)
    construction

    相对路径:

  • 如果资源位于资源目录的“根目录”中,则路径应以
    /
    开头:
    
    “/etc.txt”
    
    其中文件etc.txt存储在资源目录中
  • 对于图片中的示例,您的路径是:
    /querys/storedquerys.txt

  • 如果您的资源位于资源目录中,但位于扁平目录中,则与您调用的类的包相同
    .getResource(path)
    ,如:
  • resources/com/pe/querys/etc.txt

    您的路径不应包括已启动的“/”:
    getClass().getResource(“com/pe/querys/etc.txt”)

    这是因为当您的构建系统(您的maven)构建项目时,如果您将资源存储在resources目录的
    root
    ,它会将资源放在jar的“root”中,或者,如果您像
    resources/com/pe/querys/etc.txt这样存储,则会在jar
    com/pe/querys/
    中创建内部jar
    com/pe/querys/
    ,并将其放在jar中

    对不起我的英语,希望我能帮助你理解它是如何工作的

    另外,我写了这篇文章,是关于俄语的,但是你可以通过谷歌翻译(我试过了,可以理解),里面有更多的例子和解释

    祝你好运

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