c# - 如何遍历物理文件夹并在 C# 中读取叶文件

标签 c# .net windows file c#-4.0

我有一个根节点 A 包含 B 包含 C 包含 D 包含 XML 文件 abc.xml 所以在 D:\驱动器中,我有以下目录结构 A>>B>>C>>D。 这个路径是动态的。通过遍历物理文件夹在 C# 中读取文件 abc.xml 的最佳做法是什么?

最佳答案

您可以实现递归搜索算法,遍历所有文件夹并深入到子文件夹。

伪代码:

public void GetXMLFilesRecursive(string currentFolder, List<string> results)
{
    // Enumerate all directories of currentFolder
    string[] folders = Directory.GetDirectories(currentFolder);
    foreach (string folder in folders)
        GetXMLFilesRecursive(folder, results));

    // Enumerate all XML files in this folder only if it has no other sub-folders (is a leaf)
    if (folders.Length == 0)
    {
        string[] xmlFiles = Directory.GetFiles(currentFolder, "*.xml");
        results.AddRange(xmlFiles);
    }
}

此方法仅返回层次结构最低文件夹(即没有子文件夹的文件夹)中的 XML 文件。如果您想要沿途找到的所有文件,请注释掉 if (folders.Length == 0)。另一方面,您还可以将 Directory.GetFilesSearchOption.AllDirectories 一起使用。


为什么我写了一个递归算法:OP 询问如何在叶目录中找到所有 XML 文件。您不能将 Directory.GetFilesSearchOption.AllDirectories 一起使用,但您需要实现上述内容。

关于c# - 如何遍历物理文件夹并在 C# 中读取叶文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19264832/

相关文章:

C# 关闭窗口时复选框选中/取消选中

c# - 我可以在 .NET 中像数字一样格式化字符串吗?

c# - 使用 .csproj 打包时,NuGet 依赖框架定位不起作用

windows - 如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?

python - 当代码在 Linux 上运行良好时 Windows 上的编码错误

c# - 为列表中的每个项目设置权重

c# - 我们应该总是在类中包含一个默认构造函数吗?

.net - 为现有 SOAP Web 服务创建 REST 包装器

java - 如何在Linux操作系统中使用java从特定位置读取.properties文件

c# - 如何在 ASP.NET Web API 上对 Action Filter 进行依赖注入(inject)