2012-09-11 98 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)。請務必查看接受答案的第一條評論。

相關問題