有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getResourceAsStream()返回内容为空的流

我在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");

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

我的Eclipse是在Windows7上运行的3.6Helios64位

谷歌搜索揭示了资源路径或输入流为空的情况,但我的情况并非如此

类路径条目如下所示:

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

共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    这正是吉姆·加里森所说的——你在“src”中编辑了文件,从“bin”中读取

  3. # 3 楼答案

    我试过你的例子,对我来说getResource()getResourceAsStream()同样有效。我知道这并不令人安心

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

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

    如果你读了这个流,但是没有内容,那么你的文件有问题。为了进行测试,我在Stream上调用了read()方法