IDEA加載resources文件夾下文件相對路徑問題

今天碰到了一個加載文件的相對路徑問題,異常如下:



目錄結構:



讀取文件的代碼如下:

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();
		}
	}

正斜槓,反斜槓,正反雙斜槓,還有加上上一級目錄我都試過。。。最後運行出來的都是一個反斜槓,實在是傷腦筋,而且這段代碼在 eclipse 下運行沒問題,我拷貝到 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 還有一個優勢是可以設置編碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章