winforms c# -查找硬盘上文件的完整路径

zkure5ic  于 2022-11-16  发布在  C#
关注(0)|答案(1)|浏览(133)

我想获取磁盘D上名为wampmanager.conf的文件的完整路径。

private static string Scan(string path, string file)
{
    try
    {
        foreach (var dir in Directory.EnumerateDirectories(path))
        {
            foreach (var fl in Directory.EnumerateFiles(dir, file))
            {
                if (!string.IsNullOrEmpty(fl))
                {
                    return fl;
                }
            }
        }
    }
    catch (Exception)
    {
        // ignored
    }
    return null;
}

var wmc = Scan(@"D:\", "wampmanager.conf");
MessageBox.Show(wmc);

它总是返回null,即使wampmanager.conf文件存在于磁盘D上。我猜它进入了一个像d:\recovery\这样的目录,我没有访问权限,然后它崩溃到一个catch并返回null。但当我不使用try catch时,我总是得到访问授权错误。我该如何处理这个问题?

70gysomp

70gysomp1#

对于每个目录,您必须使用SearchOption.AllDirectories在搜索操作中包括当前目录及其所有子目录。请尝试使用以下函数:

private static string Scan(string path, string file)
    {
        foreach (var dir in Directory.EnumerateDirectories(path))
        try
        {
            string[] files = Directory.GetFiles(dir, file, SearchOption.AllDirectories);
             if (files.Length > 0)
             {
                 return files[0];
             }
         }
         catch (Exception e)
         {
             string s = e.Message;
         }
        return "not found!";
    }

相关问题