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