Java 通过代码从当前运行的JAR中提取文件

Java 通过代码从当前运行的JAR中提取文件,java,file,jar,io,extract,Java,File,Jar,Io,Extract,有没有什么内置方法可以让用户从当前运行的JAR中提取文件并保存在磁盘上 提前感谢。使用,之后你可以用它做任何你想做的事情 对于两行程序,您可以使用。我不确定您是否会知道您的类是从哪个jar执行的,但您可以尝试从jar中提取资源: getResourceAsStream将允许您访问类路径上的任何匹配资源,而不仅仅是带有“当前正在运行的JAR”的文件,假设这是一个使用“java-JAR”执行的JAR文件。@jarnbjo yesp。如果资源没有正确打包,这可能是一个问题,但是考虑到这个问题,我认为这

有没有什么内置方法可以让用户从当前运行的JAR中提取文件并保存在磁盘上

提前感谢。

使用,之后你可以用它做任何你想做的事情


对于两行程序,您可以使用。

我不确定您是否会知道您的类是从哪个jar执行的,但您可以尝试从jar中提取资源:

getResourceAsStream将允许您访问类路径上的任何匹配资源,而不仅仅是带有“当前正在运行的JAR”的文件,假设这是一个使用“java-JAR”执行的JAR文件。@jarnbjo yesp。如果资源没有正确打包,这可能是一个问题,但是考虑到这个问题,我认为这个问题比需要它专门来自“运行的jar”要广泛得多,而排除了所有打包完全相同的其他资源。请注意,您可能需要指定jar中文件的绝对路径。然后任何类都可以使用。示例:InputStream=Object.class.getResource(“/”+文件名).openStream();请注意,一些Files.copy实现(java.nio.file.Files)不会关闭输入流->可能的内存泄漏。
File file = new File("newname.ext");
if (!file.exists()) {
     InputStream link = (getClass().getResourceAsStream("/path/resources/filename.ext"));
     Files.copy(link, file.getAbsoluteFile().toPath());
}