我需要能夠訪問存儲在編譯的jar文件中的文件。我已經想出瞭如何將文件添加到項目中,但是如何在代碼中引用它?我該如何將文件從jar文件複製到用戶硬盤上的某個位置?我知道有幾十種方法可以訪問文件(FileInputStream,FileReader等),但我不知道如何查看內部。訪問jar文件中的文件?
8
A
回答
17
你可以使用這樣的事情:
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile);
如果foo.txt的是你的JAR文件的根目錄,你會使用:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("foo.txt");
假設類與資源在相同的JAR文件中,我相信。
1
看看JarFile類。您需要獲取jar文件中特定條目的InputStream的所有內容。
4
您可以使用getResource()來獲取類路徑上的文件的URL,或者使用getResourceAsStream()來獲取InputStream。
例如:
BufferedReader reader = new BufferedReader(new InputStreamReader(
this.getClass().getResourceAsStream("foo.txt")));
4
您可以使用JarFile類閱讀JAR文件的內容。
這裏有一個如何,你可以從一個JAR文件中獲得一個特定的文件,並提取它的一個例子:
JarFile jar = new JarFile("foo.jar");
String file = "file.txt";
JarEntry entry = jar.getEntry(file);
InputStream input = jar.getInputStream(entry);
OutputStream output = new FileOutputStream(file);
try {
byte[] buffer = new byte[input.available()];
for (int i = 0; i != -1; i = input.read(buffer)) {
output.write(buffer, 0, i);
}
} finally {
jar.close();
input.close();
output.close();
}
0
只是想補充一點,如果我們想訪問內位於以下路徑Jar文件:
Windows:
c:\your-jar-file.jar\dir1\dir2\dir3\foo.txt
Linux:
/home/your-jar-file.jar/dir1/dir2/dir3/foo.txt
將需要使用下面的代碼(注意,有NO在路徑的開始「/」(正斜槓)字符):
InputStream is = this.getClass().getClassLoader().getResourceAsStream("dir1/dir2/dir3/foo.txt");
相關問題
- 1. 訪問.jar文件中的文件
- 2. 訪問jar文件中的.jpg文件
- 3. 從Jar文件中訪問.dat文件
- 4. 訪問jar文件裏面的文件
- 5. 從jar文件訪問文件夾
- 6. 訪問Jar文件中的文件和文件夾
- 7. 無法訪問.jar文件
- 8. 無法訪問JAR文件
- 9. 無法訪問jar文件
- 10. 訪問運行jar文件
- 11. 從tomcat訪問jar文件
- 12. 訪問.JAR文件中的圖像
- 13. 如何訪問jar文件內的文件夾內的文件?
- 14. 如何從.jar文件中訪問與.jar文件相同的文件夾中的.dat文件?
- 15. 在JAR文件中訪問資源
- 16. 如何訪問jar文件中的文件?
- 17. 動態訪問Jar文件中的圖像文件
- 18. 無法訪問apache tomcat中lib文件夾下的jar文件
- 19. 如何訪問JAR文件中的文件夾
- 20. 如何訪問jar文件中的資源(Excel文件)
- 21. Java:訪問嵌入式jar文件中的文件
- 22. 無法訪問jar文件的lib \ archquery.jar
- 23. 訪問文件,可執行的JAR
- 24. 如何在jar文件中訪問.db模式文件
- 25. 如何從jar文件中訪問xhtml文件
- 26. 如何訪問位於源文件夾內的jar文件?
- 27. 訪問與jar文件相鄰的文件
- 28. 訪問打包成jar文件的文件
- 29. 更好的WAR文件訪問Jar文件或類
- 30. 無法訪問jar文件ApacheJMeter.jar
我需要的部分是需要FileReader作爲輸入的BufferedReader。我如何將InputStream轉換爲FileReader? – LRFLEW 2011-03-02 20:53:14
您只需使用Java文檔連接點即可。看看BufferedReader - 在See Also部分,有FileReader和InputStreamReader。轉到InputStreamReader等。 – 2011-03-02 21:02:49
是的,我可以做到這一點,但我只是查找了BufferedReader,並發現了我需要使用的parter類BufferInputStream:P。 – LRFLEW 2011-03-02 21:43:39