java get image获取根路径_Java 获取资源文件路径
1 問題描述
通過源碼運行時,一般使用如下方式讀取資源文件:
String str = "1.jpg";
資源文件與源碼文件放在同一目錄下,或者擁有同一父級目錄:
String str = "a/b/1.jpg";
這樣直接編譯運行沒有問題,但是打成JAR包后會讀取不了,直接拋空指針異常。
2 解決辦法
使用URL或者InputStream進行讀取:
URL url = getClass().getClassLoader().getResource("a/b/1.jpg");
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("a/b/1.png");
注意不能在路徑前加/:
URL url = getClass().getClassLoader().getResource("/a/b/1.jpg");
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("/a/b/1.png");
這樣讀取出來是null。
getClass().getClassLoader().getResource()從源碼運行的URL如下:
從JAR包運行的URL如下:
測試系統Win10,從源碼運行的話有一個file:前綴,而從JAR包運行有一個jar:file:前綴。
前綴一般沒有影響,一般都能直接通過URL獲取文件,比如在Swing的JFrame中設置圖標:
mainFrame.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("image/icon.png")).getImage());
如果只能通過String處理路徑,需要把前綴file:或者jar:file:去掉,JAR的話可以結合JarFile類讀取文件。
總結
以上是生活随笔為你收集整理的java get image获取根路径_Java 获取资源文件路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 灵活就业人员,退休前一定要注意这几点!
- 下一篇: java文件调用脚本_Java中调用文件