我有一个根节点 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.GetFiles
与 SearchOption.AllDirectories
一起使用。
为什么我写了一个递归算法:OP 询问如何在叶目录中找到所有 XML 文件。您不能将 Directory.GetFiles
与 SearchOption.AllDirectories
一起使用,但您需要实现上述内容。
关于c# - 如何遍历物理文件夹并在 C# 中读取叶文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19264832/