我的Eclipse项目资源文件夹中有一个文件。我需要一种方法将此文档加载到我的Java文件中。优先表示将在InputStream中。
我根据一些搜索尝试了以下但是它似乎没有工作,我不确定为什么(我得到null),任何帮助赞赏
InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf");
答案 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")
(无领先/
,亲戚)都应该为您提供文件。