为什么我在文件确实存在时收到 FileNotFoundException
Why I'm getting FileNotFoundException while the file does exist
我有一个 FileSystemWatcher
可以跟踪是否创建了新文件。如果是的话,我有一个方法可以读取文件并做一些事情..
在下面的代码中,我得到了 FileNotFoundException
但 path/file 确实存在!我已经检查了路径、文件名等。不知道为什么找不到文件。
同样在调试模式下,我验证了路径变量具有正确的路径,但是当我强制它继续时,它以某种方式运行但不幸的是在发布模式下它停止了..
using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.Default))
{
//my code
}
我得到的错误是
An unhandled exception of type 'System.IO.FileNotFoundException'
occurred in mscorlib.dll Additional information: Could not find file
'myPathHere
有人可以帮忙吗?
FileSystemWatcher
告诉您文件何时创建,是的。但这并不意味着到那时文件已经写完了——它肯定不是。当你单步执行代码时,你给了另一个进程写入和关闭文件所需的时间 - 最后,这是一个并发问题,并且并发问题在调试时往往很难重现。同样的,当你开始手动检查时,文件早就完成了——问题出在时间上。遗憾的是,无法使用 FileSystemWatcher
在文件关闭时给您一个注释(因此,准备好供您的应用程序使用)。
您需要等到文件真正完成 - 尝试打开文件并在失败时稍等的简单循环应该就足够了:)
我有一个 FileSystemWatcher
可以跟踪是否创建了新文件。如果是的话,我有一个方法可以读取文件并做一些事情..
在下面的代码中,我得到了 FileNotFoundException
但 path/file 确实存在!我已经检查了路径、文件名等。不知道为什么找不到文件。
同样在调试模式下,我验证了路径变量具有正确的路径,但是当我强制它继续时,它以某种方式运行但不幸的是在发布模式下它停止了..
using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.Default))
{
//my code
}
我得到的错误是
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll Additional information: Could not find file 'myPathHere
有人可以帮忙吗?
FileSystemWatcher
告诉您文件何时创建,是的。但这并不意味着到那时文件已经写完了——它肯定不是。当你单步执行代码时,你给了另一个进程写入和关闭文件所需的时间 - 最后,这是一个并发问题,并且并发问题在调试时往往很难重现。同样的,当你开始手动检查时,文件早就完成了——问题出在时间上。遗憾的是,无法使用 FileSystemWatcher
在文件关闭时给您一个注释(因此,准备好供您的应用程序使用)。
您需要等到文件真正完成 - 尝试打开文件并在失败时稍等的简单循环应该就足够了:)