2010-09-15 57 views
5

我正在編寫必須在osgi環境中執行的測試用例,我已將測試數據作爲測試包中的一組文件。我能夠使用bundle.getResource訪問測試數據文件,該文件返回一個URL,我可以從中獲取特定文件的InputStream,但是如何找到測試插件中特定文件夾中的所有文件列表。在eclispe我可以使用fileLocator來做到這一點。查找OSGI包中的文件和文件夾

/束
          TESTDATA
               此時就把one.txt存盤
                two.txt
                three.txt
                folder1中
                              FILE1.TXT
                              FILE2.TXT

在上面捆綁我想找到的所有文件和存在的測試數據文件夾的文件夾。


最佳Reards,
凱沙夫

回答

-5

資源(類,文件,流等)的類加載器訪問可以通過一切可以提供的。通常,資源從JAR文件加載。但它也可能是數據庫,文件系統或HTTP資源。因此,爲了獲取資源列表,您需要依賴類加載器的源代碼。如果資源位於JAR中,則需要獲取JAR本身並通過例如JAR訪問它。 java.util.zip。因爲ClassLoader接口不提供關於源代碼的信息,所以你必須採用其他方式(比如使用你所使用的OSGi框架)。

+3

錯誤!迭代zip文件等在Java中是不可移植的,Java對已被完全破壞的資源進行抽象。這是一種非常糟糕的做法,不幸的是這種做法很普遍,因爲類加載器沒有它們的資源迭代器。查看BJ的答案:OSGi有Bundle.findEntries和Bundle.getEntryPaths,它們允許您以便攜方式遍歷資源。 – 2010-09-16 10:51:08

12

如果您知道信息所在的包,請使用Bundle.findEntries或Bundle.getEntryPaths。

相關問題