c#用递归目录路径填充字符串列表

时间:2016-12-15 08:02:02

标签: c#

我需要使用非空递归目录路径填充字符串列表。

使用此代码我可以获取目录路径和子文件夹的数量:

string path = Environment.ExpandEnvironmentVariables(@"f:\PAB\");
int directoryCount = System.IO.Directory.GetDirectories(@path).Length;
string[] directoryArray = Directory.GetDirectories(path);

我想填充一个不是空目录的新列表字符串

我想也许我可以使用这段代码:

for (int i = 0; i < directoryCount; i++)
{
    if (Directory.GetFiles(directoryArray[i]).Length != 0)

但是我对c#完全是新手,我不知道怎么能这样做。

2 个答案:

答案 0 :(得分:1)

  

我想填充一个不是空目录的新列表字符串

如果您将非空目录视为“肯定有文件”,那么这可能是一个选项:

string path = @"yourpath";
List<string> non_empty_dirs = System.IO.Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
                           .Where(x => Directory.GetFiles(x).Length != 0).ToList();

这将提取包含子文件夹的所有文件夹。

如果只需要顶级目录,请使用SearchOption.TopDirectoryOnly

如果非空意味着“肯定有文件或有子文件夹”,则需要将此过滤器也包含在where条件中:

.Where(x => Directory.GetFiles(x).Length != 0 ||
            Directory.GetDirectories(x).Length != 0 ).ToList();

答案 1 :(得分:0)

解决了这段代码:

string path = Environment.ExpandEnvironmentVariables(@“f:\ PAB \”);             int directoryCount = System.IO.Directory.GetDirectories(@path).Length;

$ sysctl -w net.core.rmem_max=value