C# 计算文件夹中文件夹和文件的总数

C# 计算文件夹中文件夹和文件的总数,c#,winforms,C#,Winforms,我有一个目录。在此目录中,它包含9个文件夹(子目录)。每个文件夹(子目录)包含数量可变的文件夹(子目录),并且在(子目录)中还包含一些文件夹…以此类推。。。。我尝试过这个方法,但我不知道如何扩展它,因为子目录的数量是可变的 public static long GetDirectoryNumberOfFiles(string directory, bool includeSubDir) { long numberFiles = Direct

我有一个目录。在此目录中,它包含9个文件夹(子目录)。每个文件夹(子目录)包含数量可变的文件夹(子目录),并且在(子目录)中还包含一些文件夹…以此类推。。。。我尝试过这个方法,但我不知道如何扩展它,因为子目录的数量是可变的

        public static long GetDirectoryNumberOfFiles(string directory, bool includeSubDir)
        {
            long numberFiles = Directory.GetFiles(@directory).Length;

            string[] subfolderEntries = Directory.GetDirectories(directory);//result 9

            //i tried this, but without luck.
            var dirInfo =new DirectoryInfo(directory);
            int dirCount = dirInfo.GetDirectories().Length;//result 9


            if (includeSubDir)
            {
              for (int i = 0; i < subfolderEntries.Count(); i++)
              { numberFiles += Directory.GetFiles(subfolderEntries[i]).Length; }//result 38
            }

          return numberFiles;
    }
public静态长GetDirectoryNumberOfFiles(字符串目录,bool includeSubDir)
{
long numberFiles=Directory.GetFiles(@Directory).Length;
string[]subfolderEntries=Directory.GetDirectories(Directory);//结果9
//我试过了,但运气不好。
var dirInfo=新目录信息(目录);
int dirCount=dirInfo.GetDirectories().Length;//结果9
如果(包括subdir)
{
对于(int i=0;i
当我右键单击该目录时,它包含23026个文件和440个文件夹。但通过这种方法,我得到了38个文件和9个文件夹。我知道它只计算子目录,而不是目录中的所有文件夹。

使用枚举目录(字符串, 搜索选项),枚举文件(字符串, 搜索选项)以及系统目录和系统文件方法(如果需要)

请尝试此操作

        public static long GetDirectoryNumberOfFiles(string directory, bool includeSubDir)
        {
            long numberFiles = Directory.GetFiles(@directory).Length;

            string[] subfolderEntries = Directory.GetDirectories(directory);//result 9

            //i tried this, but without luck.
            var dirInfo =new DirectoryInfo(directory);
            int dirCount = dirInfo.GetDirectories().Length;//result 9


            if (includeSubDir)
            {
              for (int i = 0; i < subfolderEntries.Count(); i++)
              { numberFiles += Directory.GetFiles(subfolderEntries[i]).Length; }//result 38
            }

          return numberFiles;
    }
int directoryCount = Directory.GetDirectories("yourpath", "*", SearchOption.AllDirectories).Length;
int fileCount = Directory.GetFiles("yourpath", "*", SearchOption.AllDirectories).Length;

在这里使用SearchOption很重要。有关更多信息,请参见MSDN

也请查看此问题: