-1

我需要在我的目录中计算所有文件夹的总数。我需要知道以下路径/文件夹/文件夹的所有数量。我曾尝试使用 directoryCount 但只返回主文件夹而不是我的子文件夹。

4

3 回答 3

5

您可以使用EnumerateDirectories

Directory.EnumerateDirectories(dirPath, "*",
                    SearchOption.AllDirectories).Count();
于 2013-09-07T10:34:55.823 回答
3

你可以使用Directory.GetFilesDirectory.GetDirectories方法。

C:\Soner我的路径下的所有文件:

int files = Directory.GetFiles("C:\\Soner", "*.*", SearchOption.AllDirectories).Length;
//Prints 2766

C:\Soner我的路径下的所有目录

int dirs = Directory.GetDirectories("C:\\Soner", "*", SearchOption.AllDirectories).Length;
//Prints 715

这是截图;

在此处输入图像描述

还要注意Directory.EnumerateDirectories方法,因为

EnumerateDirectories 和 GetDirectories 方法的区别如下: 使用 EnumerateDirectories 时,可以在返回整个集合之前开始枚举名称集合;使用 GetDirectories 时,必须等待返回整个名称数组,然后才能访问该数组。因此,当您处理许多文件和目录时,EnumerateDirectories 会更有效。

var count = from dr in
            Directory.EnumerateDirectories("C:\\Soner", "*",SearchOption.AllDirectories)
            select dr;

编辑后:

我只需要知道我在 C:/ 中的主文件夹的前两个子文件夹。

您可以使用;

string[] subdir = Directory.GetDirectories("C:\\", "*", SearchOption.AllDirectories);
Console.WriteLine(subdir[0]); // Your first subfolder under your C:\
Console.WriteLine(subdir[1]); // Your second subfolder under your C:\

但要小心此代码引发称为“访问路径被拒绝”的异常,因为您迭代C:\驱动器中的所有文件夹,并且某些文件夹受操作系统保护。

于 2013-09-07T10:41:17.080 回答
0

您可以使用:

public int NumOfDirs(string path)
    {
        DirectoryInfo dir = new DirectoryInfo(path);
        DirectoryInfo[] allDirs = dir.GetDirectories("*", SearchOption.AllDirectories);
        return allDirs.Length;
    }

但是你需要确保你可以访问所有的子目录,否则你会得到一个例外。

于 2013-09-07T10:41:34.770 回答