2010-09-15 61 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。

相关问题