我需要使用URL訪問當前執行的.jar中的文件。無法通過URL訪問.jar中的文件
URL url = BlockConverter.class.getResource("/test.txt");
System.out.println(url.toString());
InputStream is = url.openStream();
這就是我所做的。 輸出是:
jar:file:/C:/Users/User/Desktop/SERVER/plugins/MyJar.jar!/test.txt
我的InputStream最終總是拋出一個IOException異常被初始化的時候,即使URL被正確輸出。 那怎麼可能? 爲什麼我無法打開流?
編輯: 另外,請不要用「使用的getResourceAsStream」的答案,因爲它使用相同類型的代碼:
public InputStream getResourceAsStream(String name) {
URL url = getResource(name);
try {
return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
}
什麼來自IOException的消息?對於這個問題,你的jar的根目錄下是否有test.txt? – Powerlord
恩,非常感謝。在對代碼進行一些更改後,我沒有讀取堆棧跟蹤,結果證明文件名中的無效字符導致了IOException,而不是流。我非常感謝這個想法,我現在會去慚愧地哭泣。 –
當我說你不是第一個錯過堆棧跟蹤消息的人時,請相信我。不是由一個長鏡頭。 :P – Powerlord