伙计们,我完全糊涂了,
我的代码抛出异常,因为 File.Exists() 返回 false
public override sealed TCargo ReadFile(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("Provided file name does not exist", "fileName");
}
Visual Studio 在 throw 语句处中断,我立即在即时窗口中检查 File.Exists(fileName)
的值。它返回 true
。当我将断点拖回 if 语句并再次执行时,它再次抛出。
fileName 是文件的绝对路径。我没有创建文件,也没有写入文件(它一直在那里)。如果我将路径粘贴到记事本打开的对话框中,它会毫无问题地读取文件。
代码正在后台工作程序中执行。这是我能想到的唯一复杂因素。我确定该文件尚未在工作线程或其他地方打开。
这是怎么回事?
最佳答案
我不知道发生了什么,但为什么您根本需要 File.Exists 测试?您真正感兴趣的是“我可以阅读这个文件吗?”除了未找到文件之外,还有很多其他事情可能会出错。
更不用说,执行 File.Exists 测试是一种竞争条件,因为文件可能会在您完成测试之后但在您打开文件之前消失。只需打开文件,这是确定是否可以读取文件的最佳测试。
关于c# - File.Exists() 返回 false,但不在调试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397552/