如何从Eclipse for Java中的resources文件夹导入文件

时间:2012-09-11 20:54:09

标签: java file-upload file-io

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

我根据一些搜索尝试了以下但是它似乎没有工作,我不确定为什么(我得到null),任何帮助赞赏

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

2 个答案:

答案 0 :(得分:0)

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

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

最后,在您的代码中,从“/ Project /..."

中删除前导”/“

当你删除那个前导“/”时,它会使资源位置相对于Class的类加载器的父目录 - 在本例中为'classes'文件夹。保持正斜杠使资源位置“绝对” - 而不是相对于任何父目录。

编辑:以下问题应该有助于了解此流程的更多特定于Eclipse的详细信息:Java in Eclipse: Where do I put files on the filesystem that I want to load using getResource? (e.g. images for an ImageIcon)。请务必查看已接受答案的第一条评论。

答案 1 :(得分:0)

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

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

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

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

然后,MyClass.class.getResourceAsStream("/BlankPDF.pdf")(领先/,绝对)和MyClass.class.getResourceAsStream("../../../BlankPDF.pdf")(无领先/,亲戚)都应该为您提供文件。