gpt4 book ai didi

java - 将资源作为流获取时的 NullPointer

转载 作者:行者123 更新时间:2023-11-28 21:57:49 24 4
gpt4 key购买 nike

我正在尝试从我的项目目录访问一个文件,我们称它为

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com