Q
通过代码
9
A
回答
8
使用getResourceAsStream
(docs),之后你可以随心所欲地做任何事情。
对于双线,你可以使用one of the Commons IO copy methods。
0
我不知道你是否会得到知道从哪个罐子得到执行类,但你可以试试这个从罐子中提取资源: How to write a Java program which can extract a JAR file and store its data in specified directory (location)?
16
File file = new File("newname.ext");
if (!file.exists()) {
InputStream link = (getClass().getResourceAsStream("/path/resources/filename.ext"));
Files.copy(link, file.getAbsoluteFile().toPath());
}
+0
请注意,某些Files.copy实现(java.nio.file.Files)不会关闭输入流 - >可能的内存泄漏。 – Vity 2018-01-25 07:24:16
相关问题
的getResourceAsStream会给您可以访问任何匹配的资源上类路径,而不仅仅是一个带有“当前正在运行的JAR”的文件,假定这是一个使用“java -jar”执行的JAR文件。 –
jarnbjo
2012-07-13 14:28:06
@jarnbjo是的。如果资源没有正确打包,这可能是一个问题,但考虑到这个问题,我认为这个问题比需要从“运行jar”特别是来自所有其他资源打包完全一样。 – 2012-07-13 14:32:10
这样做。谢谢! – Konstantin 2012-07-17 17:12:04