【问题标题】:How to access files in other packages without using a dummy class如何在不使用虚拟类的情况下访问其他包中的文件
【发布时间】:2011-11-04 18:45:38
【问题描述】:

我实际上是在我的 java web 应用程序中使用以下代码加载 OWL 文件:

InputStream is = Dummy.class.getResourceAsStream("content.owl");

我在与content.owl 相同的包中创建了Dummy.class 以访问此文件。

是否有一种(重构安全的)方法可以直接加载 content.owl 而无需虚拟类?

【问题讨论】:

    标签: java getresource


    【解决方案1】:

    我认为您应该能够根据放置已编译文件的输出文件夹的位置给出它的相对路径,从而从任何类中获取该资源。

    例如,最初 proj/src/a/b/content.owl 包中的资源文件和我访问此资源的类位于 proj/src/a/b/ 包中c/d/MyClass.java。构建项目后,我的可执行文件进入 bin 文件夹,我访问资源的类进入 proj/bin/a/b/c/d/MyClass.class 目录,资源进入 proj /bin/a/b/content.owl.

    并且由于 bin 文件夹被指定为我项目的类路径中的输出文件夹,我可以使用代码访问资源:

    InputStream is = MyClass.class.getResourceAsStream("/a/b/content.owl");
    

    【讨论】:

    • 听起来不错。但是这种重构安全吗?如果 content.owl 的名称改变了怎么办?如何防止运行时错误?
    • 嗯,我觉得如果不能加载这个资源引起的错误是可以容忍的,输入流可以检查是否为空,如果不能容忍,你可以尝试给出资源的路径作为附加参数或配置,或者如果可以更改名称,则可能有任何其他解决方法。我想你最终应该知道资源的新名称。
    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多