首页 > 解决方案 > 从路径中获取所有嵌套文件夹名称(无路径)

问题描述

我有点困惑如何从给定路径获取嵌套文件夹名称。许多文件夹可能没有文件夹。

这就是我所做的。我也尝试过子串,但后来我得到了 1 个返回的结果,整个文件的结果都是一样的。

foreach (string fL in GetDirectories(targetDirectory))
            {
                foreach (string fN in ProcessDirectory(fL))
                {
                    string[] subType = Directory.GetDirectories(directory);

                    myDocs.Add(new Documents
                    {
                        Id = "1",
                        Directory = directory,
                        Type = type,
                        FilePath = filePath,
                        FileName = fN,
                        Description = description,
                        SubType = subType
                    });
                }
            }

我得到的输出如下:

{
    "Id": "1",
    "Directory": "C:/aaa/bbb/ccc/ddd/eee",
    "Type": "QA",
    "FilePath": "C:/aaa/bbb/ccc/ddd/eee/New Text Document.txt",
    "FileName": "New Text Document.txt",
    "Description": "New Text Document",
    "SubType": [
        "C:/aaa/bbb/ccc/ddd/eee\\New folder",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (2)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (3)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (4)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (5)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (6)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (7)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (8)",
        "C:/aaa/bbb/ccc/ddd/eee\\New folder - Copy (9)"
    ]
}

期望的结果:

{
    "Id": "1",
    "Directory": "C:/aaa/bbb/ccc/ddd/eee",
    "Type": "QA",
    "FilePath": "C:/aaa/bbb/ccc/ddd/eee/New Text Document.txt",
    "FileName": "New Text Document.txt",
    "Description": "New Text Document",
    "SubType": [
        "New folder",
        "New folder - Copy",
        "New folder - Copy (2)",
        "New folder - Copy (3)",
        "New folder - Copy (4)",
        "New folder - Copy (5)",
        "New folder - Copy (6)",
        "New folder - Copy (7)",
        "New folder - Copy (8)",
        "New folder - Copy (9)"
    ]
}

标签: c#.net

解决方案


您可以使用Path.GetFileName()从完整路径中获取目录的名称。是的,它被称为 Get FileName,但实际上它只是在最后一个 slash 之后获取所有内容。(它实际上并不查看文件系统)

如果你可以使用 Linq,你可以这样做:

string[] subType = Directory.GetDirectories(directory)
                            .Select(Path.GetFileName).ToArray();

推荐阅读