一尘不染

使用C#确定文件是否存在并解析UNC路径

c#

我正在尝试编写一个函数来确定文件是否存在。这两种方法均证明返回的结果不一致(与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路径失败的任何想法将不胜感激。


阅读 348

收藏
2020-05-19

共1个答案

一尘不染

您可以为不存在的文件创建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 $”需要管理权限。

2020-05-19