在OSGI Bundle中查找文件和文件夹

kes*_*v84 5 java file-io osgi eclipse-plugin

我正在编写必须在osgi环境中执行的测试用例,我已将测试数据放在测试包中,这是一组文件.我能够使用bundle.getResource访问测试数据文件,它返回一个URL,我可以从中获取特定文件的InputStream,但是如何找到测试插件中特定文件夹中的所有文件列表.在eclispe中,我可以使用fileLocator来执行此操作.

/ bundle
     testdata
        one.txt
        two.txt
        three.txt
        folder1
               file1.txt
               file2.txt

在上面的包中,我想找到testdata文件夹中存在的所有文件和文件夹.


最佳Reards,
凯沙夫

BJ *_*ave 12

如果您知道信息包含在哪个包中,请使用Bundle.findEntries或Bundle.getEntryPaths.


caf*_*abe -6

类加载器访问的资源(类、文件、流等)可以由任何东西提供。通常,资源是从 JAR 文件加载的。但它也可以是数据库、文件系统或 HTTP 资源。因此,为了获取资源列表,您需要依赖类加载器背后的源。如果资源位于 JAR 内,您需要获取 JAR 本身并通过 java.util.zip 等访问它。由于 ClassLoader 接口不提供有关背后源的信息,因此您必须采取其他方式(例如挂钩到您使用的 OSGi 框架)。

  • 错误的!!!迭代 zip 文件等在 Java 中是不可移植的,Java 对资源的抽象完全被破坏了。这是一种非常糟糕的做法,不幸的是,这种做法很普遍,因为类加载器没有为其资源提供迭代器。请参阅BJ的答案:OSGi有Bundle.findEntries和Bundle.getEntryPaths,允许您以可移植的方式迭代资源。 (3认同)