繁体   English   中英

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

[英]How to count the number of files in a directory AND its sub directories

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

这只是一个基本的 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();

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

尝试这个:

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

最快的方法是对目录和文件计数执行单个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;

重复: 在c#中计算文件夹中的文件数

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM