C#读取所有子文件夹的路径(子文件夹必须读到最底层的文件夹,该文件夹下就不会再有文件夹了)

string[]ss=Directory.GetDirectories(@"D:\Document\","*",SearchOption.AllDirectories);... string[] ss = Directory.GetDirectories(@"D:\Document\","*", SearchOption.AllDirectories);
我这样获取的地址会有DOCUMENT的二三级文件夹,不是我想要的获取最后一级文件夹,比如说DOCUMENT下有1文件夹,1文件夹下有2文件夹2文件夹下就没有子文件夹了,现在我只需要获取2文件夹的path:D:\Document\1\2,而不需要1文件夹的path:D:\Document\1,求指点,财富值用光了,只能说谢谢好心人了
展开
 我来答
hyjiacan
2014-07-17 · TA获得超过3912个赞
知道小有建树答主
回答量:894
采纳率:100%
帮助的人:1085万
展开全部
/// <summary>
/// 查找指定目录下的所有末级子目录
/// </summary>
/// <param name="dir">要查找的目录</param>
/// <param name="list">查找结果列表</param>
/// <param name="system">是否包含系统目录</param>
/// <param name="hidden">是否包含隐藏目录</param>
static void GetEndDirectories(DirectoryInfo dir, List<DirectoryInfo> list, bool system=false, bool hidden=false)
{
    DirectoryInfo[] sub = dir.GetDirectories();

    if (sub.Length == 0)
    {// 没有子目录了
        list.Add(dir);
        return;
    }

    foreach (DirectoryInfo subDir in sub)
    {
        // 跳过系统目录
        if (!system && (subDir.Attributes & FileAttributes.System) == FileAttributes.System)
            continue;
        // 跳过隐藏目录
        if (!hidden && (subDir.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
            continue;

        GetEndDirectories(subDir, list);
    }
}


调用方法:

List<DirectoryInfo> list = new List<DirectoryInfo>();
DirectoryInfo dir = new DirectoryInfo(@"D:\Document\");

GetEndDirectories(dir, list);
// 输出所有目录
foreach (DirectoryInfo di in list)
{
    Console.WriteLine(di.FullName);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式