我有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
有人可以帮忙吗?
答案 0 :(得分:0)
FileSystemWatcher
会告诉您何时创建文件,是的。但这并不意味着该文件已经完成了写作 - 它肯定不是。当您逐步执行代码时,您需要为其他进程提供编写和关闭文件所需的时间 - 最终,这是一个并发问题,并发问题往往难以重现调试时同样地,当你到处手动检查时,文件很长时间 - 问题出在时间上。遗憾的是,当文件关闭时,没有办法使用FileSystemWatcher
给你一个注释(因此,你的应用程序可以使用它)。
你需要等到文件实际完成 - 一个简单的循环试图打开文件并在失败时稍等一下应该运行得很好:)