如何在程序文件夹c#中查找特定文件的文件路径

时间:2014-10-25 04:45:27

标签: c# c#-4.0

我需要找到特定文件的路径。 我知道文件的文件名和扩展名。但我不知道文件所在的位置。 该文件将位于 C:\ Program Files 的任何子目录中。所以我需要在程序文件夹中搜索文件。 我的文件名是 CASdb.accdb

2 个答案:

答案 0 :(得分:3)

最快的方法之一是对目录中的文件进行枚举。当然,在 C:\ Program Files 中会有很多文件,所以你必须对其进行测试才能看出它的表现如何。

MSDN - Directory.EnumerateFiles Method

一个例子:

// LINQ query for all files containing the word 'Europe'. 
var files = from file in 
    Directory.EnumerateFiles(@"C:\\Program Files\\", SearchOption.AllDirectories)
        where file.ToLower().Contains("casdb.accdb")
        select file;

答案 1 :(得分:1)

您可以使用Environment.SpecialFolder.ProgramFiles查找 ProgramFiles 文件夹中的文件。

// Search All Files **Recursive**
DirSearch(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
files.Dump();

// Search Files in ProgramFiles Folder Only
files.AddRange(Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)));
files.AddRange(Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)));

static List<string> files = new List<string>();
static void DirSearch(string sDir)
{
  try
  {
      foreach (string d in Directory.GetDirectories(sDir))
      {
          foreach (string f in Directory.GetFiles(d))
          {
              if (true /*logic*/)
                  files.Add(f);
          }
          DirSearch(d);
      }
  }
  catch (System.Exception excpt)
  {
      Console.WriteLine(excpt.Message);
  }
}

您应该在foreach中实施搜索逻辑。