using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IOSerialize.IO
{
public class Recursion
{
public static List<DirectoryInfo> FindAll(string rootPath)
{
List<DirectoryInfo> dirList = new List<DirectoryInfo>();
DirectoryInfo rootDirectory = new DirectoryInfo(rootPath);//1
dirList.Add(rootDirectory);
FindChild(rootDirectory, dirList);
//DirectoryInfo[] dirChildList = rootDirectory.GetDirectories();//2
//dirList.AddRange(dirChildList);
//foreach (var child in dirChildList)
//{
// DirectoryInfo[] dirGrandList = child.GetDirectories();//3
// dirList.AddRange(dirGrandList);
// foreach (var grand in dirGrandList)
// {
// }
//}
return dirList;
}
/// <summary>
/// 找出文件夹的子文件夹,放入集合,
/// 遍历子文件,再。。。。
/// </summary>
/// <param name="parentDirectory">文件夹</param>
/// <param name="dirList">集合</param>
private static void FindChild(DirectoryInfo parentDirectory, List<DirectoryInfo> dirList)
{
DirectoryInfo[] dirChildList = parentDirectory.GetDirectories();
dirList.AddRange(dirChildList);
if (dirChildList != null && dirChildList.Length > 0)//1 递归一定要有跳出条件
{
foreach (var child in dirChildList)//2 递归很耗资源
{
FindChild(child, dirList);
}
}
}
}
}
用递归获取子文件夹
最新推荐文章于 2022-12-31 10:33:27 发布