使用c# GetFiles Length,但只计算文件名中含有一定数量字符的文件

本文关键字:字符 文件 中含有 文件名 Length GetFiles 计算 使用 | 更新日期: 2023-09-27 18:14:06

所以我用的是简单的

ImgFilesCount = ImgDirInfo.GetFiles("*.jpg").Length;

来计算一个目录中有多少个文件。但是我需要它只计算文件名中恰好有26个字符的文件。我试着

ImgFilesCount = ImgDirInfo.GetFiles("?????????????????????????.jpg").Length;

但它没有工作。唯一的选择是执行foreach循环并检查每个文件名并增加计数器吗?我有一种感觉linq可能可以用。where语句做到这一点,但我不知道linq。

使用c# GetFiles Length,但只计算文件名中含有一定数量字符的文件

可能

int count = ImgDirInfo.EnumerateFiles("*.jpg").Count(f => f.Name.Length == 26);

EnumerateFiles更有效,因为它不需要在开始处理之前将所有文件加载到内存中。

  • 当您使用EnumerateFiles时,您可以在返回整个集合之前开始枚举FileInfo对象的集合。
  • 当你使用GetFiles时,你必须等待整个FileInfo对象数组返回,然后才能访问该数组。
ImgFilesCount = ImgDirInfo.GetFiles("*.jpg")
                          .Where(file => file.Name.Length == 26)
                          .Count();

像这样?

        string[] files = Directory
                         .EnumerateFiles(@"c:'Users'x074'Downloads" , "*.jpg" , SearchOption.AllDirectories )
                         .Where( path => Path.GetFileName(path).Length > 20 )
                         .ToArray()
                         ;