2012-11-14 123 views
0

我的情況如下:我有包packA,其中我有classA,我有一個file.txtpackB.resources。在classA我使用這個訪問file.txt從另一個包的訪問文件

InputStreamReader in = new InputStreamReader(new FileInputStream("/packB/resources/file.txt"), "UTF-8"); 

但不幸的是它讓我看到了異常:

java.io.FileNotFoundException:\ packB \資源\ file.txt的(指定的 路徑找不到)

+0

代碼和錯誤信息不匹配。代碼使用''資源'',但錯誤消息顯示''ressources''。 – hmjd

+0

@hmjd:公佈更新後的,謝謝。 – Adil

回答

2

FileInputStream類基於文件系統路徑在文件系統中打開一個文件。

但你顯然試圖做的就是打開通過位於classpath中的資源。你應該使用Class.getResourceAsStream(String)

1

使用類似於下面的東西。請注意,/作爲包名稱前的前綴。 YourClass被假定爲packA。

InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt"); 
2

如果您file.txt封裝與應用程序,你不應該訪問使用文件系統在所有。該應用程序可能打包成jar文件,因此該文件不在文件系統中。你應該訪問它作爲一種資源,而不是:

InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8")); 
0

您應該從文件路徑中刪除後/和使用classA.class.getClassLoader().getResourceAsStream("packB/resources/file.txt")