【问题标题】:Any way to get a File object from a JAR从 JAR 中获取 File 对象的任何方法
【发布时间】:2010-02-03 22:32:02
【问题描述】:

我有一个 JAR 文件,其中包含一个使用外部模型文件的 API。我想将模型文件包含在 JAR 本身中,以便其他开发人员更容易使用。 API 将只接受一个 File 对象,有没有办法做到这一点?我已经尝试了以下方法,但都失败了:

  • 使用 class.getResourceAsStream()。如果 API 接受 InputStream,这将起作用。
  • 解析类路径并尝试从条目构建(JAR 将显示为 app.jar)

我想一个选项是使用 getResourceAsStream 并将文件移动到 HDD 上的永久位置,但是我不喜欢这个选项。必须有更好的东西,有什么想法吗?

【问题讨论】:

    标签: java file io


    【解决方案1】:

    .jar 文件中的资源不是操作系统可以通过普通文件访问 API 直接访问它们的文件。

    而且由于java.io.File 恰好代表了那种文件(即在操作系统看来像文件的东西),它不能用于引用 .jar 文件中的任何内容。

    一种可能的解决方法是将资源提取到一个临时文件并使用File 引用该文件。

    请注意,通常尝试处理文件的 API 也应编写为处理 InputStream/OutputStream 以允许此类操作成功。

    【讨论】:

    • 是的,我没有编写 API,否则我会这样做。我已经讨论过临时文件解决方案,如果这是唯一的选择,我宁愿使用其他开发人员可以设置文件放置位置的配置文件。
    猜你喜欢
    • 2018-11-01
    • 2019-10-07
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多