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

时间:2019-02-07 10:00:46

标签: c#

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

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

 System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("sourcePath");
        int count = dir.GetFiles().Length;

该代码的预期结果很好,并显示了目录中的文件总数。我只需要对其进行编辑,使其包含子目录及其文件

4 个答案:

答案 0 :(得分:5)

使用文件计数

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();

使用目录计数

var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();

然后,您可以根据需要将它们添加在一起。

答案 1 :(得分:1)

尝试一下:

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

答案 2 :(得分:1)

最快的方法是对目录和文件计数执行单个EnumerateFileSystemInfos,因为浏览文件系统非常昂贵。

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;

答案 3 :(得分:0)

重复:Counting the number of files in a folder in c#

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