如何在C#中获取计算机中的特定文件地址?

时间:2018-09-02 13:17:03

标签: 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();
}

请任何人在代码中提出问题或建议对代码进行修改以获得期望的结果。

1 个答案:

答案 0 :(得分:2)

正如彼得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";
}