簡體   English   中英

C#Directory.GetFiles具有擴展名和大小過濾器

[英]C# Directory.GetFiles With Extension AND Size Filter

我想計算具有特定擴展名且大小超過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.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM