bool match = Regex.IsMatch(Path.GetFileName(Directory.GetFiles(string.Format(@"C:\apps\{0}\", app), "*.config").ToString()).ToLower(), "loggingconfiguration.config");
我一直在使用下面的代码将配置放入列表中,然后循环遍历每个配置以查看它们是否与 "loggingconfiguration.config"
的文件名匹配。或"*app*.config."
这可以正常工作,但我不确定这是否是处理该场景的最佳方法。
List<string> configFiles = Directory.GetFiles(string.Format(@"C:\apps\{0}\", app), "*.config").ToList<string>();
foreach (var item in configFiles)
{
if (item.ToLower().Contains("loggingconfiguration.config") || (Path.GetFileName(item.ToLower()).Contains(app)))
{
//Do something
}
}
我想知道是否有办法通过搜索 "loggingconfiguration.config"
来省去循环列表的步骤。或"\*app*.config"
第一的。我在顶部的尝试在 system.string[] 中进行 `Path.GetFileName(Directory.GetFiles(string.Format(@"C:\apps{0}\", app), "*.config") 搜索。
最佳答案
假设您使用的是 .NET 4 或更高版本,您可以执行以下操作:
var files = new DirectoryInfo(string.Format(@"C:\apps\{0}\", app))
.EnumerateFiles("*.config")
.Where(x=>
x.Name.Equals("loggingconfiguration.config", StringComparison.OrdinalIgnoreCase) ||
x.Name.ToUpperInvariant().Contains("APP"));
否则使用GetFiles
:
var files = new DirectoryInfo(string.Format(@"C:\apps\{0}\", app))
.GetFiles("*.config")
.Where(x=>
x.Name.Equals("loggingconfiguration.config", StringComparison.OrdinalIgnoreCase) ||
x.Name.ToUpperInvariant().Contains("APP"));
EnumerateFiles
信息 there
关于c# - 您可以搜索所需的文件,而不是将 Directory.GetFiles() 放入列表中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501712/