C# 如何从目录中获取文件特定的文件名?

C# 如何从目录中获取文件特定的文件名?,c#,.net,winforms,C#,.net,Winforms,但不仅是gif,我还想指定它将是唯一包含名称红外线的文件。例如,我有文件名0infrared.gif和0visible.gif,我想获取所有红外文件。也许*infrared*(jpg | gif)可以工作这将获取所有文件名为红外且扩展名为jpg的文件 string[] list = Directory.GetFiles(countriesMainPath + "\\" + currentDownloadCountry, "*.jpg"); string partialName = "infr

但不仅是gif,我还想指定它将是唯一包含名称红外线的文件。例如,我有文件名0infrared.gif和0visible.gif,我想获取所有红外文件。

也许
*infrared*(jpg | gif)
可以工作

这将获取所有文件名为红外且扩展名为jpg的文件

string[] list = Directory.GetFiles(countriesMainPath + "\\" + currentDownloadCountry, "*.jpg");
 string partialName = "infrared";
 DirectoryInfo dir = new DirectoryInfo(@"c:\");
 FileInfo[] filesInDir = dir.GetFiles("*" + partialName + "*.*");
 foreach (FileInfo foundFile in filesInDir)
 {
    string fullName = foundFile.FullName;
    Console.WriteLine(fullName);
 }    

这将返回文件名中包含红外线的所有文件。

我想这可能就是您要查找的文件。参考:


Directory.GetFiles
方法不支持管道字符作为两个选项之间的替代方式。您的注释说您需要
.gif
文件,但您的代码说的是
.jpg
。您想要哪一个?这将获得所有包含“红外线”的文件,而不仅仅是
.jpg
s或
.gif
s。这就是op想要的“不仅是gif,我还想指定它将是唯一包含…”的文件。欢迎使用SO!阅读以了解如何使用代码块
string[] list = Directory.GetFiles(countriesMainPath + "\\" + currentDownloadCountry, 
             "*infrared*.jpg");
string[] list = Directory.GetFiles(
    countriesMainPath + "\\" + currentDownloadCountry, 
    "*infrared*.*");
public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption)
{
    string[] searchPatterns = searchPattern.Split('|');
    List<string> files = new List<string>();
    foreach (string sp in searchPatterns)
        files.AddRange(System.IO.Directory.GetFiles(path, sp, searchOption));
    files.Sort();
    return files.ToArray();
}
var wantedImgs = GetFiles(
    dirYouWant, "*infrared*.jpg|*infrared*.gif", 
    earchOption.TopDirectoryOnly);