IDEA如何加載resources文件夾下文件相對路徑
IDEA加載resources文件夾下文件相對路徑
今天碰到了一個加載文件的相對路徑問題
出現(xiàn)異常
如下:
目錄結(jié)構(gòu)
讀取文件
的代碼如下:
public void load(String path) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(path)); String line = ""; while ((line = br.readLine()) != null) { m_tbl.put(Integer.parseInt(line), true); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
正斜杠,反斜杠,正反雙斜杠,還有加上上一級目錄我都試過。。。
最后運(yùn)行出來的都是一個反斜杠,實(shí)在是傷腦筋,而且這段代碼在 eclipse 下運(yùn)行沒問題,我拷貝到 idea 下的 resources 文件夾下了就報異常。
后來研究之后得出下面兩種解決方案:
1、采用絕對路徑;
2、還是使用相對路徑,這時用類加載器加載文件路徑。
代碼如下:
public void load(String path) { BufferedReader br = null; try { InputStream in = SetTable.class.getClassLoader().getResourceAsStream(path); br = new BufferedReader(new InputStreamReader(in, "UTF-8")); String line = ""; while ((line = br.readLine()) != null) { m_tbl.put(Integer.parseInt(line), true); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
InputStreamReader 相比于 FileReader 還有一個優(yōu)勢是 可以設(shè)置編碼。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java泛型之協(xié)變與逆變及extends與super選擇
這篇文章主要介紹了Java泛型之協(xié)變與逆變及extends與super選擇,文章圍繞主題內(nèi)容展開詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下2022-05-05Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文)
這篇文章主要介紹了Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01spring-data-elasticsearch @Field注解無效的完美解決方案
這篇文章主要介紹了spring-data-elasticsearch @Field注解無效的完美解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07