c#目录.GetFiles与扩展名和大小过滤器
本文关键字:过滤器 扩展名 目录 GetFiles | 更新日期: 2023-09-27 18:15:15
我想计算具有特定扩展名的文件夹中文件的数量,并且大小大于X kb。有人能告诉我怎么做吗?
我可以做扩展部分:
Directory.GetFiles("c:''temp''", "*.txt", SearchOption.TopDirectoryOnly).Length
您可以通过从目录中的每个文件中创建FileInfo
,然后查询它的FileInfo.Length
属性来做到这一点:
var count = Directory.EnumerateFiles(
@"c:'temp'", "*.txt", SearchOption.TopDirectoryOnly)
.Count(file => new FileInfo(file).Length / 1024 >= size);
计算具有特定扩展名和的文件夹中的文件数量大小大于X kb的
您可以使用DirectoryInfo.EnumerateFiles
和FileInfo.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
必须这样做。
EnumerateFiles
和GetFiles
方法的区别如下使用EnumerateFiles
,您可以开始枚举的集合FileInfo
对象,然后返回整个集合。当你如果使用GetFiles
,则必须等待FileInfo
的整个数组对象,以便在访问数组之前返回。因此,当您处理许多文件和目录时,EnumerateFiles
可以更有效率。
当我用LINQ过滤时,我总是使用EnumerateFiles
。