如何通过其部分名称查找文件?

时间:2012-02-24 09:57:05

标签: c# c#-4.0

如何获取完整文件名?

例如:

我有一个名为171_s.jpg的文件存储在硬盘上。

我需要按部分名称找到该文件,即171_s,并获取全名。

我该如何实现?

4 个答案:

答案 0 :(得分:60)

以下是使用GetFiles()的示例:

static void Main(string[] args)
{
    string partialName = "171_s";
    DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(@"c:\");
    FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + partialName + "*.*");

    foreach (FileInfo foundFile in filesInDir)
    {
        string fullName = foundFile.FullName;
        Console.WriteLine(fullName);
    }    
}

答案 1 :(得分:9)

答案已经发布,但是为了便于理解,这里是代码

string folderPath = @"C:/Temp/";
DirectoryInfo dir= new DirectoryInfo(folderPath);
FileInfo[] files = dir.GetFiles("171_s*", SearchOption.TopDirectoryOnly);
foreach (var item in files)
{
    // do something here
}

答案 2 :(得分:8)

您可以使用System.IO.Directory.GetFiles()

http://msdn.microsoft.com/en-us/library/ms143316.aspx

public static string[] GetFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
)
  

<强>路径       键入:System.String       要搜索的目录。

     

<强>是searchPattern       键入:System.String       用于匹配路径中文件名称的搜索字符串。参数不能以两个句点(“..”)结尾或包含两个句点   (“..”)后跟DirectorySeparatorChar或   AltDirectorySeparatorChar,也不能包含任何字符   InvalidPathChars。

     

<强> searchOption       键入:System.IO.SearchOption       SearchOption值之一,指定搜索操作是应包括所有子目录还是仅包含当前子目录   。目录

答案 3 :(得分:2)

你可以这样做:

....

List<string> _filesNames;

foreach(var file in _directory)
{
    string name = GetFileName(file);
    if(name.IndexOf(_partialFileName) > 0)
    {
      _fileNames.Add(name);   
    }
}
....