gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:05 25 4
gpt4 key购买 nike

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");

关于c# - 路径作为类似于 Directory.GetFiles 的方法的模式匹配的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32608391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com