我有这样的下面的方法来获取目录的字节大小:获取与门槛目录大小
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