gpt4 book ai didi

c# - 如何使用c#获取包含特定文件的目录列表

转载 作者:行者123 更新时间:2023-11-30 19:43:31 25 4
gpt4 key购买 nike

我希望获得包含特定文件的所有文件夹/目录的列表。我如何使用 C# 代码执行此操作。

例如:假设我有 20 个文件夹,其中 7 个文件夹有一个名为“abc.txt”的文件。我想知道所有包含文件“abc.txt”的文件夹。

我知道我们可以通过查看路径中的所有文件夹并每次检查 File.Exists(filename); 来做到这一点。但我想知道是否有任何其他方法可以做同样的事情,而不是遍历所有文件夹(在有很多文件夹的情况下,这可能会耗费我很少的时间)。

谢谢
-纳言

最佳答案

我会使用 EnumerateFiles 方法具有搜索模式的 Directory 类和包含 AllDirectories 的 SearchOption。这将返回与模式匹配的所有文件(包括目录的完整文件名)。

使用 Path类你得到文件的目录。

string rootDirectory = //your root directory;
var foundFiles = Directory.EnumerateFiles(rootDirectory , "abc.txt", SearchOption.AllDirectories);

foreach (var file in foundFiles){
Console.WriteLine(System.IO.Path.GetDirectoryName(file));
}

EnumerateFiles 仅在 .NET Framework 4 之后可用。如果您使用的是旧版本的 .NET Framework,则可以使用 GetFiles目录类的。

更新(见 PLB 的评论):

如果对目录的访问被拒绝,上面的代码将失败。在这种情况下,您将需要一个接一个地搜索每个目录以处理异常。

public static void SearchFilesRecursivAndPrintOut(string root, string pattern)
{
//Console.WriteLine(root);
try
{
var childDireactory = Directory.EnumerateDirectories(root);
var files = Directory.EnumerateFiles(root, pattern);

foreach (var file in files)
{
Console.WriteLine(System.IO.Path.GetDirectoryName(file));
}

foreach (var dir in childDireactory)
{
SearchRecursiv(dir, pattern);
}
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}

关于c# - 如何使用c#获取包含特定文件的目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14724745/

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