我想列出/路径中的所有文件夹名和大小--在我的例子中,我在`/ path中有两个文件夹
XYZ (12)ABC (10)我想用FluentFTP来获得名字和大小,用blazor来实现。
我正在使用BabyFTP作为一个测试FTP服务器。
我所做的就是
private void GetFileSize()
{
using (var conn = new FtpClient("127.0.0.1"))
{
conn.Connect();
foreach (FtpListItem item in conn.GetListing("/"))
{
Console.WriteLine(item.Name);
Console.WriteLine(item.Size);
}
conn.Disconnect();
}
}但我得到的Name是正确的,但我得到Size作为0。如何获得每个文件夹的大小?
发布于 2022-11-03 05:34:04
目录列表中的目录条目没有大小。在任何地方,只需检查Windows dir命令或unix ls命令即可。
您必须递归地求和所有包含的文件的大小。如下所示:
ulong GetDirectorySize(FtpClient client, string path)
{
ulong result = 0;
foreach (var entry in client.GetListing(path))
{
if (entry.Type == FtpObjectType.File)
{
result += (ulong)entry.Size;
}
else if (entry.Type == FtpObjectType.Directory)
{
result += GetDirectorySize(client, entry.FullName);
}
}
return result;
}https://stackoverflow.com/questions/74298331
复制相似问题