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