IDEA如何加載resources文件夾下文件相對(duì)路徑
IDEA加載resources文件夾下文件相對(duì)路徑
今天碰到了一個(gè)加載文件的相對(duì)路徑問題
出現(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(); } }
正斜杠,反斜杠,正反雙斜杠,還有加上上一級(jí)目錄我都試過。。。
最后運(yùn)行出來的都是一個(gè)反斜杠,實(shí)在是傷腦筋,而且這段代碼在 eclipse 下運(yùn)行沒問題,我拷貝到 idea 下的 resources 文件夾下了就報(bào)異常。
后來研究之后得出下面兩種解決方案:
1、采用絕對(duì)路徑;
2、還是使用相對(duì)路徑,這時(shí)用類加載器加載文件路徑。
代碼如下:
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 還有一個(gè)優(yōu)勢(shì)是 可以設(shè)置編碼。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 字符串詞頻統(tǒng)計(jì)實(shí)例代碼
java 字符串詞頻統(tǒng)計(jì)實(shí)例代碼,需要的朋友可以參考一下2013-03-03Java泛型之協(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完全攻略(圖文),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01spring-data-elasticsearch @Field注解無效的完美解決方案
這篇文章主要介紹了spring-data-elasticsearch @Field注解無效的完美解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07