我正在尝试编写一个函数来确定文件是否存在。这两种方法证明会返回不一致的结果(与返回误报的 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$”。
关于c# - 使用 C# 确定文件是否存在并解析 UNC 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/458363/