当前位置: 首页 > 知识库问答 >
问题:

如何在Java中从资源文件夹中读取文件?[副本]

简景焕
2023-03-14

以下是我得到的错误:

java.io.FileNotFoundException: shader.glsl (Das System kann die angegebene Datei nicht finden)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at com.leocat.game.shader.ShaderProgram.loadShader(ShaderProgram.java:54)
    at com.leocat.game.shader.ShaderProgram.init(ShaderProgram.java:18)
    at com.leocat.game.shader.StaticShader.init(StaticShader.java:8)
    at com.leocat.game.states.GameState.init(GameState.java:29)
    at com.leocat.game.Game.init(Game.java:91)
    at com.leocat.game.Game.updateGLFW(Game.java:60)
    at com.leocat.game.Game.run(Game.java:132)
    at java.lang.Thread.run(Unknown Source)

提前感谢!

共有1个答案

殷永嘉
2023-03-14

不要使用fileAPI来获取资源文件,因为它可能工作(例如在IDE开发期间(因为所有编译的文件ESA都放在磁盘上),并且在构建和部署JAR之后将无法工作(因为本地文件系统无法访问JAR内容)

不是获取文件,而是直接获取资源流。使用file API,您无论如何都必须在某个时候获得FileInputStream。因此,要使它在任何地方都能工作,请使用

InputStream in = Main.class.getClassLoader().getResourceAsStream("shader.glsl");

在本例中,shader.glsl必须存在于resource文件夹中(如果您使用的是maven),或者为了更精确和更通用,必须将其编译为JAR文件的根。如果它嵌套在JAR中,则必须使用/path/to/resource/shader.glsl来获取该资源

 类似资料:
  • 我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

  • 问题内容: 我正在使用Spring Boot和。我正在尝试从文件夹读取一个文件。我尝试了几种不同的方法,但无法正常工作。这是我的代码。 这是文件的位置。 在这里,我可以看到文件夹中的文件。 但是,当我运行代码时,出现以下错误。 我在代码中做错了什么? 问题答案: 在花费大量时间尝试解决此问题之后,终于找到了可行的解决方案。该解决方案利用了Spring的ResourceUtils。也应该适用于jso

  • 问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资

  • 如何使用URI从资源文件夹的子文件夹中读取文件 资源文件夹中有一些json文件,如: 现在我想在我的课堂上读这个 这是我正在尝试的。 我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。

  • 问题内容: 我想像这样从我的jar中读取资源: //Read the file 并且在Eclipse中运行它时效果很好,但是如果我将其导出到jar中运行,则会出现: 我真的不知道为什么,但是经过一些测试,我发现我是否改变了 至 然后它的作用相反(它在jar中起作用,但在Eclipse中不起作用)。 我正在使用Eclipse,并且包含我的文件的文件夹位于类文件夹中。 问题答案: 而不是尝试将资源作为