【发布时间】:2011-02-02 11:11:40
【问题描述】:
我创建了一个 jar 文件,其中包含一个可运行的编译类和一些模板文件(文本)。我现在想使用打包到 jar 中的文本文件作为 File 对象在应用程序中分发。
我尝试只使用不起作用的相对路径。 如何获得指向 jar 中文本文件的 File 对象?
有没有办法做到这一点,这样它在运行未打包的类文件和从具有相同代码的 jar 时都可以工作,还是我需要使用单独的函数?
【问题讨论】:
我创建了一个 jar 文件,其中包含一个可运行的编译类和一些模板文件(文本)。我现在想使用打包到 jar 中的文本文件作为 File 对象在应用程序中分发。
我尝试只使用不起作用的相对路径。 如何获得指向 jar 中文本文件的 File 对象?
有没有办法做到这一点,这样它在运行未打包的类文件和从具有相同代码的 jar 时都可以工作,还是我需要使用单独的函数?
【问题讨论】:
在 jar 中,您可以像 Class.getResourceAsStream(String) 一样使用它,或者类似的东西。
从外面看,它不是它的 jar 文件,所以你必须提取它才能实际使用内部文件
【讨论】:
File) 作为模板的基础目录传递。从 IDE 运行时,与目录的普通 File 对象配合得很好。不,我希望它也可以从单个 Jar 文件运行。我设法将文件打包到 jar 中。我会将文件提取到临时目录,还是有更好的方法?
getResourceAsStream()
如果您在应用程序中使用 JAR,那么 Class.getResourceAsStream(String) 就可以了。
或者,如果您使用的是 Servlet,那么 ServletContext.getResourceAsStream(String) 也可以。
这两个方法返回一个InputStream(你的资源数据),而不是你想要的File对象。
【讨论】: