中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven項目讀取resources文件路徑問題解決方案

發布時間:2020-10-05 14:55:32 來源:腳本之家 閱讀:390 作者:賈樹丙 欄目:開發技術

讀取resources下文件的方法

網上有問答如下:

問:

  new FileInputStream("src/main/resources/all.properties")
  new FileInputStream("./src/main/resources/all.properties")

  上面兩個無法讀取maven下資源文件目錄下的文件嘛,總是提示找不到該路徑,這么寫錯了嘛,但是我的其他maven可以讀取

答:
  要取編譯后的路徑,而不是你看到的src/main/resources的路徑。如下:

  URL url = MyTest.class.getClassLoader().getResource("conf.properties");
  File file = new File(url.getFile());

  或者

  InputStream in = MyTest.class.getClassLoader().getResourceAsStream("conf.properties");

第二種方法,也可以改成

  InputStream in = getClass().getClassLoader().getResourceAsStream("conf.properties");

同事的一種的寫法是:

  InputStream in = getClass().getResourceAsStream("conf.properties");

  然后怎么也獲取不到,最后才發現,只要添加了.getClassLoader()就可以了

getClassLoader() 的作用

  •   getClass():取得當前對象所屬的Class對象
  •   getClassLoader():取得該Class對象的類裝載器
  •   類裝載器負責從Java字符文件將字符流讀入內存,并構造Class類對象,在你說的問題那里,通過它可以得到一個文件的輸入

Class.getClassLoader()的一個小陷阱,空指針異常:

  昨天我的code總在Integer.class.getClassLoader().getResource("*********");這一句拋出空指針異常,定位為getClassLoader()返回null,查了一下jdk的文檔,原來這里還有一個陷阱:

  這里jdk告訴我們:如果一個類是通過bootstrap 載入的,那我們通過這個類去獲得classloader的話,有些jdk的實現是會返回一個null的,比如說我用 new Object().getClass().getClassLoader()的話,會返回一個null,這樣的話上面的代碼就會出現NullPointer異常.所以保險起見我們最好還是使用我們自己寫的類來獲取classloader("this.getClass().getClassLoader()“),這樣一來就不會有問題。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济宁市| 昭平县| 安吉县| 田林县| 泰和县| 卢氏县| 东明县| 古田县| 红桥区| 襄樊市| 英吉沙县| 荥经县| 开鲁县| 华容县| 临海市| 东兴市| 镇康县| 赣州市| 公安县| 平乐县| 保康县| 钟山县| 寻乌县| 扎鲁特旗| 山东省| 商洛市| 佛坪县| 青河县| 改则县| 思茅市| 泰和县| 霸州市| 类乌齐县| 梁平县| 灵山县| 望都县| 通渭县| 成都市| 马公市| 安顺市| 伊金霍洛旗|