You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET 8(C#)中统计Azure Blob存储容器指定文件夹文件数

Azure Blob Storage 统计特定前缀文件夹下文件数的实现方案

核心结论

目前Azure Blob Storage没有提供无需遍历即可直接返回特定前缀下文件总数的API,因为Blob存储采用扁平结构,所谓的“文件夹”只是通过前缀模拟的逻辑概念,必须通过遍历前缀下的Blob来统计数量。

你的现有代码分析

你提供的代码是可行的,能够正确统计指定前缀下的所有Blob数量,但可以通过一些优化提升性能:

  • 默认的GetBlobsAsync会返回Blob的部分元数据,如果你只需要计数,可以减少返回的元数据量
  • 如果需求是仅统计当前文件夹下的文件(不包含子文件夹内的文件),现有代码会包含子文件夹中的Blob,需要调整参数

优化后的实现方案

方案1:统计前缀下所有文件(包含子文件夹)

通过指定traits和states为None,减少返回的元数据,提升遍历效率,同时可以用LINQ异步方法简化计数逻辑:

using Azure.Storage.Blobs;
using System.Linq;

BlobServiceClient blobServiceClient = new BlobServiceClient("DefaultEndpointsProtocol=https;AccountName=hello;AccountKey=asaACVsfFefsdsdsfadJHGDZCJSCSNyessfsfsfsfsfsc==;EndpointSuffix=core.windows.net");
var blobContainerClient = blobServiceClient.GetBlobContainerClient("mycontainer");

// 仅请求必要的最小元数据,降低网络传输开销
var blobs = blobContainerClient.GetBlobsAsync(
    prefix: "folder1/",
    traits: BlobTraits.None,
    states: BlobStates.None);

// 使用System.Linq.Async的CountAsync简化计数,需安装该NuGet包
int count = await blobs.CountAsync();

方案2:仅统计当前文件夹下的文件(不含子文件夹)

如果需要排除子文件夹中的文件,使用GetBlobsByHierarchyAsync并指定分隔符/,只统计当前层级的Blob:

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

BlobServiceClient blobServiceClient = new BlobServiceClient("DefaultEndpointsProtocol=https;AccountName=hello;AccountKey=asaACVsfFefsdsdsfadJHGDZCJSCSNyessfsfsfsfsfsc==;EndpointSuffix=core.windows.net");
var blobContainerClient = blobServiceClient.GetBlobContainerClient("mycontainer");

var hierarchyBlobs = blobContainerClient.GetBlobsByHierarchyAsync(
    delimiter: "/",
    prefix: "folder1/",
    traits: BlobTraits.None,
    states: BlobStates.None);

int count = 0;
await foreach (BlobHierarchyItem item in hierarchyBlobs)
{
    // 跳过虚拟文件夹,只计数实际的Blob文件
    if (item.IsBlob)
    {
        count++;
    }
}

注意事项

  • 确保已安装Azure.Storage.Blobs NuGet包(.NET 8环境推荐使用最新稳定版本)
  • 使用CountAsync时,需要额外安装System.Linq.Async NuGet包
  • 遍历的耗时与前缀下的Blob数量正相关,这是当前Azure Blob Storage支持的唯一统计方式

内容的提问来源于stack exchange,提问作者binga58

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:18:15