我正在尝试编写一个函数来确定文件是否存在。这两种方法均证明返回的结果不一致(与isFileFound()相比,fileExists()似乎提供了准确的结果,后者返回假阳性- 我在尝试创建实例时会期望有异常)。
protected bool isFileFound(string path, string fileName) { System.IO.FileInfo fi = null; bool found = false; try { fi = new System.IO.FileInfo(path + fileName); found = true; } catch (Exception e) { baselogger.Fatal(e.Message + " " + e.StackTrace + " \n" + path + fileName); } return found; } protected bool fileExists(string path, string pattern) { bool success = false; try { success = File.Exists(path + pattern); } catch (Exception e) { baselogger.Warn(e.Message + " " + e.StackTrace + " " + e.Source); } return success; }
似乎都无法解析以下语法的UNC路径: \\ abcserver \ c $ \ xyzfolder \ foo.bar
对于这些方法为何unc路径失败的任何想法将不胜感激。
您可以为不存在的文件创建FileInfo。但是然后您可以检查FileInfo.Exists属性以确定文件是否存在,例如:
FileInfo fi = new FileInfo(somePath); bool exists = fi.Exists;
更新 :在简短的测试中,这也适用于UNC路径,例如:
FileInfo fi = new FileInfo(@"\\server\share\file.txt"); bool exists = fi.Exists;
您确定该帐户(在其上运行您的应用程序)有权访问该共享。我认为(默认情况下)访问共享“ c $”需要管理权限。