【问题标题】:Finding files and folders in an OSGI Bundle在 OSGI Bundle 中查找文件和文件夹
【发布时间】:2011-04-12 14:32:27
【问题描述】:

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

/捆绑
测试数据
one.txt
两个.txt
三.txt
文件夹1
文件 1.txt
文件2.txt

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


最好的回报,
凯沙夫

【问题讨论】:

    标签: java file-io eclipse-plugin osgi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 错了!!!迭代 zip 文件等在 Java 中是不可移植的,Java 对完全损坏的资源有一个抽象。不幸的是,这是一种非常糟糕的做法,因为类加载器没有针对其资源的迭代器。查看 BJ 的答案:OSGi 有 Bundle.findEntries 和 Bundle.getEntryPaths,它们允许您以可移植的方式迭代资源。
      猜你喜欢
      • 2013-01-08
      • 2014-11-07
      • 2020-11-05
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2019-02-25
      相关资源
      最近更新 更多