我的Eclipse项目中的资源文件夹中有一个文件。我需要一种将此文档加载到我的Java文件中的方法。优选的表示形式将在InputStream中。如何在Eclipse for Eclipse中的资源文件夹中导入文件
我尝试以下基于一些搜索,但它似乎并没有工作,我不知道为什么(我得到空),任何帮助赞赏
InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf");
我的Eclipse项目中的资源文件夹中有一个文件。我需要一种将此文档加载到我的Java文件中的方法。优选的表示形式将在InputStream中。如何在Eclipse for Eclipse中的资源文件夹中导入文件
我尝试以下基于一些搜索,但它似乎并没有工作,我不知道为什么(我得到空),任何帮助赞赏
InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf");
其中传递作为参数传递给getResourceAsStream
具有的字符串是任意的位置相对到从调用getResourceAsStream
类,或绝对 w.r.t.您的任何源文件夹,以领先的/
。
因此,如果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")
(无领导/
,相对)应该让你的文件。
确保资源位于同一文件夹作为您编译的类。我不使用Eclipse,但Netbeans在构建时会自动创建一个“classes”文件夹。包(即org.website.PDFReader
)中的类将在类的完整限定名称(即包名称+类名称)之后的'classes'文件夹下有一组子目录。无论如何,这些打包类的“父目录”仍然是“类”文件夹。
目前,请手动将资源置于该类文件夹中。几乎肯定有一种方法可以使Eclipse在构建时自动将资源复制到适当的文件夹中(请参见下文)。
最后,在你的代码,去掉开头的“/”从“/项目/ ...”
当您删除前导“/”,这使得相对于父目录的资源位置的类的类加载器 - 在这个例子中,'类'文件夹。保持该正斜杠使资源位置为“绝对” - 不相对于任何父目录。
编辑:下面的问题应该可以帮助您了解这个过程的更多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)。请务必查看接受答案的第一条评论。
或ClassLoader.getResourceAsStream(“BlankPDF.pdf”) –