我在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"/>
答案 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'中读取...