我需要在我的目录中计算所有文件夹的总数。我需要知道以下路径/文件夹/文件夹的所有数量。我曾尝试使用 directoryCount 但只返回主文件夹而不是我的子文件夹。
问问题
1067 次
3 回答
5
您可以使用EnumerateDirectories
Directory.EnumerateDirectories(dirPath, "*",
SearchOption.AllDirectories).Count();
于 2013-09-07T10:34:55.823 回答
3
你可以使用Directory.GetFiles
和Directory.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 回答