我只想将文件读入我的程序。该文件位于“../f.fsh”工作目录上方的一个目录。因此,当我在 IDE 中运行以下代码时,它可以正确运行
String name="../f.fsh";
InputStream is = getClass().getResourceAsStream(name);
InputStreamReader isreader=new InputStreamReader(is);//CRASHES HERE WITH NULL POINTER EXCEPTION
BufferedReader br = new BufferedReader(isreader);
但是当我创建一个压缩了 f.fsh 的 JAR 文件并运行它时,它会在创建 InputStreamReader 时崩溃,因为 InputStream 为空。
我已经阅读了一堆关于输入流和 JAR 文件的问题的答案,我从中得到的是我应该使用相对路径,但我已经在这样做了。据我了解 getResourceAsStream() 可以找到相对于项目根目录的文件,这就是我想要的。为什么它在 JAR 中不起作用?出了什么问题,我该如何解决?
它与类路径有关吗?我认为这仅用于包含正在运行的 jar 外部的文件。
我也尝试过,但仍然失败,在输入斜线时:
InputStream is = getClass().getResourceAsStream("\\"+name);
我查看了:How to get a path to a resource in a Java JAR file并发现 JAR 的内容可能不一定可以作为文件访问。所以我尝试复制相对于 jar 的文件(从 jar 开始的一个目录),但仍然失败。在任何情况下,我都想把我的文件留在罐子里并能够在那里阅读它们。我不知道出了什么问题。