为什么我在文件存在的时候收到FileNotFoundException

时间:2015-10-20 07:54:46

标签: c# streamreader filenotfoundexception

我有FileSystemWatcher跟踪是否创建了新文件。如果是,我有一个方法来读取文件并做一些事情。
在下面的代码中,我得到一个FileNotFoundException,但路径/文件确实存在!我已经检查了路径,文件名等。没有线索为什么它找不到文件。
同样在调试模式下,我验证了路径变量有正确的路径但是当我强制它继续时,不知何故它运行但不幸的是在发布模式下它停止了..

using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.Default))
{ 
    //my code
}

我得到的错误是

  

“System.IO.FileNotFoundException”类型的未处理异常   发生在mscorlib.dll中附加信息:找不到文件   “myPathHere

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

FileSystemWatcher会告诉您何时创建文件,是的。但这并不意味着该文件已经完成了写作 - 它肯定不是。当您逐步执行代码时,您需要为其他进程提供编写和关闭文件所需的时间 - 最终,这是一个并发问题,并发问题往往难以重现调试时同样地,当你到处手动检查时,文件很长时间 - 问题出在时间上。遗憾的是,当文件关闭时,没有办法使用FileSystemWatcher给你一个注释(因此,你的应用程序可以使用它)。

你需要等到文件实际完成 - 一个简单的循环试图打开文件并在失败时稍等一下应该运行得很好:)