2012-09-11 106 views
0

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

我尝试以下基于一些搜索,但它似乎并没有工作,我不知道为什么(我得到空),任何帮助赞赏

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

回答

0

其中传递作为参数传递给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")(无领导/,相对)应该让你的文件。

+0

或ClassLoader.getResourceAsStream(“BlankPDF.pdf”) –

0

确保资源位于同一文件夹作为您编译的类。我不使用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)。请务必查看接受答案的第一条评论。

相关问题