从JAR获取File对象的任何方法

时间:2010-02-03 14:28:09

标签: java file io

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

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

请注意,通常会尝试处理文件的API来处理InputStream / OutputStream,以便允许这种操作成功。