如何循环访问在排除特定字符的文件夹停止的目录
本文关键字:字符 文件夹 排除 何循环 循环 访问 | 更新日期: 2023-09-27 17:56:02
我想遍历一个目录并停止在不以"@"结尾的第一个文件夹
这是我到目前为止尝试的(基于本网站的另一个问题):
string rootPath = "D:''Pending''Engineering''Parts''3";
string targetPattern = "*@";
string fullPath = Directory
.EnumerateFiles(rootPath, targetPattern, SearchOption.AllDirectories)
.FirstOrDefault();
if (fullPath != null)
Console.WriteLine("Found " + fullPath);
else
Console.WriteLine("Not found");
我知道*@
不正确,不知道该怎么做。
我也遇到了问题SearchOption
Visual studio说"这是一个模棱两可的参考"。
最终,我希望代码获取此文件夹的名称并使用它来重命名其他文件夹。
最终解决方案
我最终使用了dasblikenlight和user3601887的组合
string fullPath = Directory
.GetDirectories(rootPath, "*", System.IO.SearchOption.TopDirectoryOnly)
.FirstOrDefault(fn => !fn.EndsWith("@"));
由于EnumerateFiles
模式不支持正则表达式,因此需要获取所有目录,并在 C# 端进行筛选:
string fullPath = Directory
.EnumerateFiles(rootPath, "*", SearchOption.AllDirectories)
.FirstOrDefault(fn => !fn.EndsWith("@"));
或者只是将枚举文件替换为 GetDirectory
string fullPath = Directory
.GetDirectories(rootPath, "*@", SearchOption.AllDirectories)
.FirstOrDefault();