我正在尝试从我的项目目录访问一个文件,我们称之为它
src/main/project/foo/bar.txt
在类MyClass
但是当我这样做时:
InputStream is = MyClass.class.getResourceAsStream("bar.txt");
并使用 InputStream 执行任何操作,例如
is.toString();
我得到一个NullPointerException
我也尝试过:
MyClass.class.getResourceAsStream("/bar.txt");
和
MyClass.class.getResourceAsStream("./bar.txt");
由于该文件与我调用它的类不在同一个包中,我是否需要做一些额外的事情?该应用程序部署在 TomCat 上,因此对文件路径的绝对引用是不切实际的。
编辑:对于将其标记为空指针副本的人,我知道空指针是什么,显然它找不到资源。至于为什么会出现这种情况,我需要帮助弄清楚。
最佳答案
如果你的类(class)是 src/main/project/foo/MyClass.java
MyClass.class.getResourceAsStream("bar.txt");
应该没事。
如果您的资源位于项目中与类不同的文件夹中,请使用:
MyClass.class.getClassLoader().getResource("main/project/foo/bar.txt");
一般情况:
MyClass.class.getClassLoader().getResource("package/<subpackage/>filename");
据我所知,这适用于同一项目中任何位置的任何类。
MyClass.class.getResourceAsStream();
相对于 myClass 的位置进行操作,您无法更改它。
关于java - 以流形式获取资源时的 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813679/