java - 找不到指定的文件?

标签 java opengl 3d shader

我收到一个非常烦人的错误,代码很好,但找不到文件。

Output:
.\res\shadersbasicVertex.vs (The system cannot find the file specified) <-- yes it does actually say '\shadersbasicVertex.vs'

这是我加载资源的位置(或指定路径的位置)

    shaderReader = new BufferedReader(new FileReader("./res/shaders" + fileName));

我使用的库:lwjgl

at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at com.base.engine.ResourceLoader.loadShader(ResourceLoader.java:15)
at com.base.engine.Game.<init>(Game.java:20)
at com.base.engine.MainComponent.<init>(MainComponent.java:20)
at com.base.engine.MainComponent.main(MainComponent.java:124)

我的着色器文件夹位于: C:\Users\Badfitz66\workspace\Rain\Game engine\res\shaders

最佳答案

嗯,是的,大概fileName“basicVertex.vs”。将其放在 "./res/shaders" 的末尾,您将得到 .\res\shadersbasicVertex.vs。您需要一个额外的斜杠:

shaderReader = new BufferedReader(new FileReader("./res/shaders/" + fileName));

或者您可以使用File API 来解析路径:

File file = new File(new File("res", "shaders"), fileName);
shaderReader = new BufferedReader(new FileReader(file));

或者更好:

shaderReader = Files.newBufferedReader(Paths.get("res", "shaders", fileName));

请注意:

  • 这与 OpenGL 或任何 3D 无关 - 您只是打开一个文件
  • FileReader 始终使用平台默认编码;我建议使用一种允许您指定编码的方法 - 最后一个示例确实如此,但默认为 UTF-8。

关于java - 找不到指定的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222592/

相关文章:

java - 如何转换网页中的奇怪字符?

c++ - 确定相交四边形?

c++ - OpenGL - 2D敌人不旋转面对玩家

c++ - 围绕与原点不同的点旋转

java - IntelliJ IDEA 中的自动错误检测

java - 如何在java中搜索文件中的单词

Java在另一个线程中等待一个对象

java - 如何在 Java 3D 中旋转对象?

java - 以编程方式更改模型纹理 libgdx

javascript - 如何在 three.js 中随机化网格上面的大小?