0

我在 Eclipse 的项目中的资源文件夹中有一个文件。我需要一种方法来将此文档加载到我的 Java 文件中。优选的表示形式是在 InputStream 中。

我根据一些搜索尝试了以下操作,但它似乎不起作用,我不知道为什么(我得到空值),任何帮助表示赞赏

InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf");
4

2 回答 2

0

确保资源与已编译的类位于同一文件夹中。我不使用 Eclipse,但 Netbeans 在构建时会自动创建一个“类”文件夹。包中的类,即org.website.PDFReader,将在“类”文件夹下有一组子目录,跟在类的完全限定名之后(即包名+类名)。无论如何,这些打包类的“父目录”仍然是“类”文件夹。

暂时,将您的资源手动放在该类文件夹中。几乎可以肯定,有一种方法可以让 Eclipse 在构建时自动将资源复制到适当的文件夹中(见下文)。

最后,在您的代码中,从“/Project/...”中删除前导“/”

当您删除前导“/”时,它会使资源位置相对于您的类的类加载器的父目录 - 在本示例中,“类”文件夹。保持该正斜杠使资源位置“绝对” - 不相对于任何父目录。

编辑:以下问题应该有助于了解此过程的更多 Eclipse 特定细节:Eclipse 中的 Java:我应该将文件放在我想使用 getResource 加载的文件系统的什么位置?(例如 ImageIcon 的图像)。确保也查看对已接受答案的第一条评论。

于 2012-09-11T21:48:40.217 回答
0

您作为参数传递给的字符串必须是对于您从中调用的类getResourceAsStream的位置,或者是您的任何源文件夹的绝对位置,并带有前导.getResourceAsStream/

因此,如果resources是您项目中的源文件夹(在 Eclipse 中标有类似包的小符号),那么getClass().getResourceAsStream("/BlankPDF.pdf")应该可以工作。

示例:假设您的项目中有以下文件夹和包,源文件夹标有*

Project
    src*
        com.package.foo
            MyClass.java
    resources*
        BlankPDF.pdf

然后MyClass.class.getResourceAsStream("/BlankPDF.pdf")(leading /, absolute) 和MyClass.class.getResourceAsStream("../../../BlankPDF.pdf")(noleading /, relative) 都应该为您提供文件。

于 2012-09-11T22:03:12.210 回答