C# 如何计算目录及其子目录中的文件数

C# 如何计算目录及其子目录中的文件数,c#,C#,我正在创建一个程序来计算目录中的文件数,并在需要时显示总数。到目前为止,它可以计算目录中的文件总数,但我想知道如何编辑我的当前代码,这样它也可以计算子目录中的文件 这只是一个基本的c#应用程序。我相信有一个简单的方法可以做到这一点,但我是一个初学者,似乎找不到我需要这样做的代码 System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("sourcePath"); int count = dir.GetFiles().L

我正在创建一个程序来计算目录中的文件数,并在需要时显示总数。到目前为止,它可以计算目录中的文件总数,但我想知道如何编辑我的当前代码,这样它也可以计算子目录中的文件

这只是一个基本的c#应用程序。我相信有一个简单的方法可以做到这一点,但我是一个初学者,似乎找不到我需要这样做的代码

 System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("sourcePath");
        int count = dir.GetFiles().Length;
代码的预期结果很好地显示了目录中的文件总数。我只需要对其进行编辑,使其包含子目录及其文件,以供文件计数使用

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();
var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();
对于目录计数,请使用

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();
var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();
然后,如果需要,您可以将它们添加到一起。

用于文件计数

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();
var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();
对于目录计数,请使用

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();
var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();
然后,如果需要,您可以将它们添加到一起。

尝试以下操作:

int fileCount = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories).Count();
int subDirCount = Directory.EnumerateDirectories(path, SearchOption.AllDirectories).Count();
int total = fileCount + subDirCount;
试试这个:

int fileCount = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories).Count();
int subDirCount = Directory.EnumerateDirectories(path, SearchOption.AllDirectories).Count();
int total = fileCount + subDirCount;

最快的方法是对目录和文件计数执行单个
EnumerateFileSystemInfo
,因为浏览文件系统的成本很高

var fileAndDirectoriesCount = = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .Count();
如果要单独获取,请执行以下操作:

var res = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .GroupBy(s => s is DirectoryInfo)
        .ToDictionary(s => s.Key, s => s.Count());

var directoryCount = res.ContainsKey(true) ? res[true] : 0;
var fileCount = res.ContainsKey(false) ? res[false] : 0;

最快的方法是对目录和文件计数执行单个
EnumerateFileSystemInfo
,因为浏览文件系统的成本很高

var fileAndDirectoriesCount = = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .Count();
如果要单独获取,请执行以下操作:

var res = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .GroupBy(s => s is DirectoryInfo)
        .ToDictionary(s => s.Key, s => s.Count());

var directoryCount = res.ContainsKey(true) ? res[true] : 0;
var fileCount = res.ContainsKey(false) ? res[false] : 0;
重复:

解决方案:
int fileCount=Directory.GetFiles(@“c:\MyDir\”,“***”,SearchOption.AllDirectories)

重复:


解决方案:
int fileCount=Directory.GetFiles(@“c:\MyDir\”,“***”,SearchOption.AllDirectories)

查看MSDN for,您将发现各种有用的功能可能的副本查看MSDN for,您将发现各种有用的功能可能的副本谢谢!我用过这种方法,这是我发现的最好的方法。非常感谢:)@Joe没问题!快乐编码:)谢谢!我用过这种方法,这是我发现的最好的方法。非常感谢:)@Joe没问题!快乐编码:)