c#目录.GetFiles与扩展名和大小过滤器

本文关键字:过滤器 扩展名 目录 GetFiles | 更新日期: 2023-09-27 18:15:15

我想计算具有特定扩展名的文件夹中文件的数量,并且大小大于X kb。有人能告诉我怎么做吗?

我可以做扩展部分:

Directory.GetFiles("c:''temp''", "*.txt", SearchOption.TopDirectoryOnly).Length

c#目录.GetFiles与扩展名和大小过滤器

您可以通过从目录中的每个文件中创建FileInfo,然后查询它的FileInfo.Length属性来做到这一点:

var count = Directory.EnumerateFiles(
                        @"c:'temp'", "*.txt", SearchOption.TopDirectoryOnly)
                        .Count(file => new FileInfo(file).Length / 1024 >= size);

计算具有特定扩展名和的文件夹中的文件数量大小大于X kb的

您可以使用DirectoryInfo.EnumerateFilesFileInfo.Length:

double minKbFileSize = 500;  
var tempDir = new DirectoryInfo("c:''temp''"); 
int countLargeFiles = tempDir.EnumerateFiles("*.txt", SearchOption.TopDirectoryOnly)
   .Count(file => file.Length / 1024d > minKbFileSize);

DirectoryInfo.EnumerateFiles返回IEnumerable<FileInfo>,所以你不需要从它创建一个实例,如果你使用Directo.EnumerateFiles必须这样做。

EnumerateFilesGetFiles方法的区别如下使用EnumerateFiles,您可以开始枚举的集合FileInfo对象,然后返回整个集合。当你如果使用GetFiles,则必须等待FileInfo的整个数组对象,以便在访问数组之前返回。因此,当您处理许多文件和目录时,EnumerateFiles可以更有效率。

当我用LINQ过滤时,我总是使用EnumerateFiles