2013-03-07 71 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

相关问题