我目前正在使用遍历各种目录的程序,以确保使用File.Exists()
的特定文件存在。当路径太长时,File.Exists()错误地返回false
该应用程序声称某些文件实际上并不存在,我最近发现这个错误是由于路径太长。
我知道有地址File.Exists()
返回不正确的值的问题,但似乎没有解决这个特定的问题。
重命名目录和文件以缩短路径并不是一个真正的选择,所以我不确定此时该做什么。有没有可以解决这个问题的解决方法?
使用的代码没有什么特别的(我剪掉了一些不相关的代码),但是我会在下面包括它以防万一它有帮助。
private void checkFile(string path)
{
if (!File.Exists(path))
Console.WriteLine(" * File: " + path + " does not exist.");
}
它不返回'FALSE'不正确。它遵从文档:“如果在试图确定指定文件是否存在时发生任何错误,Exists方法将返回false,这可能会引发异常,例如传递文件名带有无效字符或太多字符,失败或缺少磁盘,或者调用者没有权限读取文件。“ –
文件是否位于特殊文件夹中? – UrbanEsc
你为什么在第一个地方检查?文件系统是不稳定的,所以你只是设置了竞争条件。在进行.Exists检查和使用文件之间删除文件时,您仍然必须准备好捕获异常,同时对.Exists()的调用会导致额外的(并且非常昂贵的)额外跳出到磁盘。最好把你的精力和代码放到这个异常处理程序中。 –