【C#】FileInfo.Exists与File.Exists的区别
- FileInfo.Exists,会在FileInfo对象第一次调用Exists方法时会缓存结果,更新缓存需要调用Refresh方法
- File.Exists,每次都会查看文件系统返回文件是否存在的状态,不会缓存结果
- FileInfo.Exists vs File.Exsists
- FileInfo::Exists Property
- How to use File.Exists and Handle Insufficient Permissions
- FileInfo.Exists returns false eventhough file exists
FileInfo.Exists与File.Exists看似很像,实际上有一些差别
先看用法
string path = @"C:\myfile.txt";
FileInfo fileInfo = new FileInfo(path);
Console.WriteLine(fileInfo.Exists);
Console.WriteLine(File.Exists(path));
再说差别
Exists property returns false if any error occurs while trying to determine if the specified file exists. This can occur in situations that raise exceptions such as passing a file name with invalid characters or too many characters, a failing or missing disk, or if the caller does not have permission to read the file.
Exists属性在确定文件是否存在时出错会返回false,比如文件名中含有非法字符、文件名过长、硬盘缺失、缺少文件读取权限等。
但实际测试下来并不是这样,只要文件存在,不管是本地文件、还是网络文件,抑或是符号链接映射的文件,也不管文件是否具有权限读写,只要文件存在,FileInfo.Exists和File.Exists都会返回True。
而用StreamReader打开时,文件有权限时一切正常;文件没有权限是,如是网络文件会出现“Could not find file '...'”的FileNotFoundException错误,如是本地文件会出现“Access to the path '...' is denied.”的UnauthorizedAccessException错误。
参考:
还没有人抢沙发呢~