路径作为模式匹配方法的一部分,类似于Directory.GetFiles
本文关键字:类似于 Directory GetFiles 一部分 模式匹配 方法 路径 | 更新日期: 2023-09-27 18:13:03
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));
}
一个不那么原始的版本可以处理更多的特殊情况(如果你需要的话):
public string[] SearchFiles(string query)
{
if (IsDirectory(query))
return Directory.GetFiles(query, "*.*");
return Directory.GetFiles(
Path.GetDirectoryName(query),
Path.GetFileName(query));
}
private static bool IsDirectory(string path)
{
if (String.IsNullOrWhiteSpaces(path))
return false;
if (path[path.Length - 1] == Path.DirectorySeparatorChar)
return true;
if (path[path.Length - 1] == Path.AltDirectorySeparatorChar)
return true;
if (path.IndexOfAny(Path.GetInvalidPathChars()) != -1)
return false;
return Directory.Exists(path);
}
使用这个新版本(参见IsDirectory()
代码),您可以这样使用它:
SearchFiles(@"c:'windows'*.*");
SearchFiles(@"c:'windows'");
SearchFiles(@"c:'windows");