gpt4 book ai didi

c# - 在 .NET 中计算目录大小的最佳方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 03:43:19 26 4
gpt4 key购买 nike

我编写了以下例程来手动遍历目录并在 C#/.NET 中计算其大小:


protected static float CalculateFolderSize(string folder)
{
float folderSize = 0.0f;
try
{
//Checks if the path is valid or not
if (!Directory.Exists(folder))
return folderSize;
else
{
try
{
foreach (string file in Directory.GetFiles(folder))
{
if (File.Exists(file))
{
FileInfo finfo = new FileInfo(file);
folderSize += finfo.Length;
}
}

foreach (string dir in Directory.GetDirectories(folder))
folderSize += CalculateFolderSize(dir);
}
catch (NotSupportedException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
}
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
return folderSize;
}

我有一个应用程序为大量文件夹重复运行此例程。我想知道是否有更有效的方法来计算 .NET 文件夹的大小?我没有在框架中看到任何具体内容。我应该使用 P/Invoke 和 Win32 API 吗?在 .NET 中计算文件夹大小的最有效方法是什么?

最佳答案

不,这看起来像 recommended way计算目录大小,相关方法如下:

public static long DirSize(DirectoryInfo d) 
{
long size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
size += DirSize(di);
}
return size;
}

你会用根调用:

Console.WriteLine("The size is {0} bytes.", DirSize(new DirectoryInfo(targetFolder));

...其中 targetFolder 是要计算的文件夹大小。

关于c# - 在 .NET 中计算目录大小的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/468119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com