我有這樣的下面的方法來獲取目錄的字節大小:獲取與門檻目錄大小
public static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
我想補充以下功能 - 如果目錄的大小大於500 MB(或任何輸入數字),我希望它返回-1;
我可以很容易地通過改變返回來實現它:
var size = di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length)
return (size <= 500*1024) ? size : -1;
,因爲它越過在.Sum(fi => fi.Length)
所有文件這不是高雅的,也沒有效率。
有沒有一個優雅的方式來添加功能,允許來電添加閾值?
注:我試圖避免遍歷所有的文件,如果有一個文件夾中有100,000個文件,第一個大於500 MB,沒有繼續迭代的重點。
你可以()''使用與TakeWhile副作用。 – SLaks
這是否意味着你想在磁盤上的大小而不是目錄的大小?或者這兩者在你所需要的方面可以忽略不計? – keyboardP
@keyboardP,我想磁盤上目錄的大小。 但是,如果它超過某個閾值,我想返回-1。 我不想迭代停止迭代一旦達到此閾值。 – Ofiris