4

我正在尝试从 JAR 文件中的另一个包中的一个类访问文件。更具体地说,我在其中创建输入流的类名为 ClassA.class 并且位于包 com.something.somethingelse 中,而我尝试使用输入流打开的文件位于包 com 中。东西。存储。我正在调用 getResourceAsStream 方法,如下所示:

    ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");

但是,它会引发 IllegalArgumentException,说明输入流不能为空。我尝试将文本文件存储在与 ClassA 相同的包中,但问题没有出现。只有当它存储在另一个包中时才会发生这种情况。请帮忙。

知道我正在执行此操作的方法是静态方法也可能会有所帮助。这和问题有关系吗?

4

2 回答 2

3

在你的班级里面com.something.somethingelse打开流:

getClass().getClassLoader().getResourceAsStream("com/something/storage/MyFile.txt");

使用getClassLoader()您以绝对方式指定包路径(没有第一个/)。

于 2012-06-30T09:32:44.660 回答
1

ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");

返回 null 因为文件“/com/something/storage/MyFile.txt”不存在

于 2012-06-30T05:25:12.483 回答