Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法访问res文件夹?_Java_Eclipse_File_Inputstream - Fatal编程技术网

Java 无法访问res文件夹?

Java 无法访问res文件夹?,java,eclipse,file,inputstream,Java,Eclipse,File,Inputstream,我有一个Java编程问题,我想得到一些帮助 我的类文件在一个单独的包中(不是默认包)。我正在尝试从我的res文件夹访问文件。我已将其添加为类文件夹(使用属性-->库-->添加类文件夹),在我的类中,我有以下代码: InputStream IS = getClass().getResourceAsStream("mytextfile.txt"); 然而它不工作,我有所有适当的进口和一切,但我只是不能让它工作。。。(当我尝试使用IS时,给出空指针异常) 我认为这与使用一个单独的包有关,因为我有另一

我有一个Java编程问题,我想得到一些帮助

我的类文件在一个单独的包中(不是默认包)。我正在尝试从我的res文件夹访问文件。我已将其添加为类文件夹(使用属性-->库-->添加类文件夹),在我的类中,我有以下代码:

InputStream IS = getClass().getResourceAsStream("mytextfile.txt");
然而它不工作,我有所有适当的进口和一切,但我只是不能让它工作。。。(当我尝试使用IS时,给出空指针异常)

我认为这与使用一个单独的包有关,因为我有另一个使用默认包的程序,它工作得很好

我想要一种在使用Eclipse和将其导出为.jar时都可以访问该文件的方法

提前感谢您的帮助

编辑:我已尝试使用/res/mytextfile.txt,但也不起作用…

getClass()。getResource
将查找相对于类存在位置的命名资源

因此,如果类存在于包
foo.bar
中,
getResource
将查找
foo/bar/mytextfile.txt
(作为类的前缀,类加载器的类路径上下文…)

相反,请尝试使用相对路径,例如

InputStream IS = getClass().getResourceAsStream("/mytextfile.txt");


假设资源目录名为
res
,并且存在于默认包下

哪个包是类和资源?现在的代码假定它们在同一个包中。如果不是,请使用完整的包路径
getResourceAsStream(“/a/b/c/mytextfile.txt”)
。哦,那么它们必须在同一个包中?如果我的res文件夹是一个添加的类文件夹怎么办?而不是包的一部分?你添加的类文件夹是什么?如果添加了
res
,则
res
不再是包名。最佳实践布局是
src/main/resources/res/mytextfile.txt
(带有“resources”类文件夹)。@user2804925不,它们不必在同一个包中,只是
getClass().getResource
将尝试执行相对查找,除非在路径的开头提供一个
/
。@Thilo如果我执行scr/main/resources/res/mytextfile.txt,它是否适用于所有内容都位于同一目录中的.jar文件?/mytextfile.txt有效!我犯了个愚蠢的错误,谢谢你的帮助!还有一个问题,在搜索文件之前,假设/使其上升到1目录是否安全?否,不允许/使其上升到1目录。它的意思是“从顶端开始”。如果
/mytextfile.txt
有效,则该文件不在任何包中。否。可以安全地假设它从类路径上下文的顶部开始(现在感到困惑)。因此,如果您的资源位于
{default package}/resources/files
中,而您的类位于
foo.bar
,则需要使用
/resources/files
路径来查找它。@Thilo从技术上讲,它位于“default package”中,但这是一个吹毛求疵的地方:P@MadProgrammer当前位置我拒绝承认存在(或生存权)的所谓“默认包”;-)永远不要使用它。
InputStream IS = getClass().getResourceAsStream("/res/mytextfile.txt");