2013-03-07 49 views
0

我做到這一點,寫一些內容到這個文件。FileNotFoundException異常的CanRead雖然()和存在()返回true

fileSymbol = new File("D:\\TempFiles\\SymbolFile.xml"); 
fileSymbol.createNewFile(); 
prSymbol = new PrintWriter(fileSymbol); 
while(//condition goes here){ 
    prSymbol.write(text); 
} 

然後我嘗試從這個文件讀取,

FileReader fr = new FileReader(fileSymbol); 
BufferedReader br = new BufferedReader(fr); 
String line = br.readLine(); 

當我嘗試運行,它提供了以下異常

java.io.FileNotFoundException: fileSymbol (The system cannot find the file specified) 

當我嘗試

fileSymbol.canRead(); 
fileSymbol.exists(); 

對兩者都返回true。

我不明白爲什麼我得到這個錯誤,雖然我已經創建的文件。當我手動檢查位置時,我能夠看到我創建的文件。

PS:我剛纔提供我的代碼的代碼段。

+1

您關閉了'prSymbol'嗎?它可能會鎖定文件。 – Vulcan 2013-03-07 06:08:17

+0

@Vulcan是的。我已經關閉它,然後像prSymbol.close()一樣讀取它。 – Prasanna 2013-03-07 06:19:57

+0

不重複。該問題涉及編譯錯誤。 – dty 2013-03-07 09:52:42

回答

3

java.io.FileNotFoundException:fileSymbol (系統找不到指定的文件)

該消息,如果您準確地轉錄了它,只能表示您重新使用"fileSymbol"作爲文件名,以前您使用的是"D:\\TempFiles\\SymbolFile.xml"

NB調用createNewFile()行創建輸出流或作家到同一文件之前是完全是浪費時間。

4

添加以下你讀

prSymbol.close(); 

不要求接近。參照JavaDoc之前調用flush()文件之前 - 關閉()

+2

不要在close()之前flush()'。這是多餘的。這就像在'throw'後面說'return',只是java不會編譯它。 – 2013-03-07 06:12:54

+1

@AdrianPronk - 是的,我只是看着它在docs.Will更新我的回答 – Abi 2013-03-07 06:17:20

+0

我已經關閉了PrintWriter的像prSymbol.close();在使用此FileReader訪問它之前。 – Prasanna 2013-03-07 06:21:24

相關問題