我想遍历一个目录并停在不结束的第一个文件夹中" @"
这是我到目前为止所尝试的(基于本网站的另一个问题):
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("@"));
答案 0 :(得分:2)
由于EnumerateFiles
模式不支持正则表达式,因此需要获取所有目录,并在C#端进行过滤:
string fullPath = Directory
.EnumerateFiles(rootPath, "*", SearchOption.AllDirectories)
.FirstOrDefault(fn => !fn.EndsWith("@"));
答案 1 :(得分:0)
或者用 GetDirectories
替换 EnumerateFilesstring fullPath = Directory
.GetDirectories(rootPath, "*@", SearchOption.AllDirectories)
.FirstOrDefault();