C# 路径作为类似于Directory.GetFiles的方法的模式匹配的一部分

C# 路径作为类似于Directory.GetFiles的方法的模式匹配的一部分,c#,.net,vb.net,C#,.net,Vb.net,Directory.GetFiles有一个重载,该重载采用路径和搜索模式: var files = Directory.GetFiles(@"c:\path\to\folder", "*.txt"); 返回指定文件夹中与模式匹配的文件。是否有一个内置的.NET方法将路径作为搜索模式的一部分 var files1 = Something.GetFiles(@"c:\path\to\folder\*.txt"); 不,没有这样的事,但我有过无数次这样的需要。幸运的是,它很容易写: public

Directory.GetFiles
有一个重载,该重载采用路径和搜索模式:

var files = Directory.GetFiles(@"c:\path\to\folder", "*.txt");
返回指定文件夹中与模式匹配的文件。是否有一个内置的.NET方法将路径作为搜索模式的一部分

var files1 = Something.GetFiles(@"c:\path\to\folder\*.txt");

不,没有这样的事,但我有过无数次这样的需要。幸运的是,它很容易写:

public string[] SearchFiles(string query)
{
    return Directory.GetFiles(
        Path.GetDirectoryName(query),
        Path.GetFileName(query));
}
不太原始的版本可能会处理更多的特殊情况(如果需要):

有了这个新版本(请参见
IsDirectory()
code),您可以这样使用它:

SearchFiles(@"c:\windows\*.*");
SearchFiles(@"c:\windows\");
SearchFiles(@"c:\windows");

这足以满足我的需要,但如果文件夹路径中有通配符,则它将不匹配,而不是仅在文件名中有通配符。@ZevSpitz绝对,要匹配路径中的通配符,您必须拆分搜索路径中的每个块。
SearchFiles(@"c:\windows\*.*");
SearchFiles(@"c:\windows\");
SearchFiles(@"c:\windows");