首页 > 解决方案 > 如何在c#中获取计算机中的特定文件地址?

问题描述

我想找到一个视频 (.mp4) 文件,该文件存在于我不知道的某个特定文件夹中。该文件具有隐藏、系统和目录属性。
我已经编写了代码来查找具有该扩展名的文件,但代码仍然没有找到该特定文件。

static void Main(string[] args)
{
    List<string> path = new List<string>();
    string fileName = "javascript_part1.mp4";
    foreach(DriveInfo d in DriveInfo.GetDrives().Where(x=>x.IsReady))
    {
        foreach(string d1 in Directory.GetDirectories(d.Name))
        {
            try
            {
                foreach(string d2 in Directory.GetDirectories(d1))
                {
                    try
                    {
                        path.AddRange(Directory.GetFiles(d2, fileName, SearchOption.AllDirectories));
                    }
                    catch(Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
    foreach(string s in path)
    {
        Console.WriteLine(s);
    }
    Console.ReadLine();
}

请如果有人可以提出代码中的问题或任何修改代码以获得所需结果的建议。

标签: c#

解决方案


正如彼得 B 已经提到的,你看起来并不深。所以你需要有点递归,像这样:

public static string FindFile(DirectoryInfo folder, string fileName)
{
    if (folder.EnumerateFiles().Where(x => x.Name == fileName).Any())
    {
        return folder.FullName;
    }

    foreach (var newFolder in folder.EnumerateDirectories())
    {
        return FindFile(newFolder, fileName);
    }

    return "Nothing found";
}

推荐阅读