getResourceAsStream()返回内容为空的流

时间:2011-03-17 18:19:31

标签: java eclipse file-io

我在eclipse中有一个小型Java项目。该项目有一个src和bin文件夹(典型),src被添加到类路径。我在Windows上运行。

以下调用有效:

System.out.println(TestINI.class.getResource("happytest.ini"));

它打印文件的路径:

file:/D:/work/baton/Touch/JTouch/bin/com/interra/tests/happytest.ini

我检查了上面提到的ini文件的内容是否有预期的内容。

但是从文件中读取如下:

InputStream is = TestINI.class.getResourceAsStream("happytest.ini");

给了我一个没有内容的输入流。即它返回一个零字节的文件。

我的Eclipse是在Windows 7上运行的3.6 Helios 64位。

谷歌搜索显示资源路径或输入流为空的情况,但事实并非如此。

类路径条目如下:

<classpathentry kind="src" path="src"/>
... other class path entries for libraries like ini4j
<classpathentry kind="output" path="bin"/>

3 个答案:

答案 0 :(得分:1)

我尝试了您的示例,它也适用于getResource()getResourceAsStream()。我知道这并不令人放心。

无论如何,有趣的是你的流没有内容,试试这个:

new FileInputStream(new File(TestINI.class.getResource("happytest.ini").toURI()));

如果您阅读此流并且没有内容,那么您的文件就会出现问题。为了测试,我在read()上调用了Stream方法。

答案 1 :(得分:0)

我想我弄明白了这个问题。对于ini文件,我的eclipse默认打开记事本。我在ini文件中通过记事本进行的更改,它们没有正确地反映在eclipse端。今天,当我通过Eclipse的文本编辑器编辑文件时,它们在getResourceAsStream()调用中正确反映。基本上在通过记事本编辑之后,资源在eclipse中不同步。

答案 2 :(得分:0)

这正是Jim Garrison所说的 - 你在'src'中编辑了文件并从'bin'中读取...