C# .NET Azure Blob存储:获取根级别目录,不列出所有Blob

C# .NET Azure Blob存储:获取根级别目录,不列出所有Blob,c#,azure,azure-storage,azure-sdk-.net,azure-blob-storage,C#,Azure,Azure Storage,Azure Sdk .net,Azure Blob Storage,我有一个Azure cloud blob存储帐户&我需要枚举它的内容。该帐户有大量数据&使用ListBlobs枚举其所有内容需要很长时间才能完成 对于云容器和目录,我希望能够只枚举根级别的项。对于容器,我假设这将枚举根级别的blob: cloudBlobContainer.ListBlobs( String.Empty, false, BlobListingDetails.None, null,

我有一个Azure cloud blob存储帐户&我需要枚举它的内容。该帐户有大量数据&使用ListBlobs枚举其所有内容需要很长时间才能完成

对于云容器和目录,我希望能够只枚举根级别的项。对于容器,我假设这将枚举根级别的blob:

cloudBlobContainer.ListBlobs(
            String.Empty,
            false,
            BlobListingDetails.None,
            null,
            null))

有没有什么合理的方法可以在不列出所有blob的情况下获取根目录?我能想到的唯一方法是荒谬的:使用blob前缀可能的所有可能组合调用ListBlob。

Zachary,不幸的是,Azure blob存储中没有“目录”这样的东西。对象层次结构如下所示:

  • 存储帐户(管理平面)
    • 存储容器[0..n](数据平面)
      • 水滴[0..n](数据平面)
当您在blob名称中看到其他正向斜杠时,它只是一个“虚拟”目录,而不是一个单独的目录实体


通过使用
.ListBlobs().OfType()
调用,您可以获得目录内容的更细粒度列表。例如,一种blob类型是
CloudBlobDirectory
。请看下面的答案:。

我读过关于虚拟目录结构的内容。为了达到我的目的,我正在考虑将虚拟目录作为容器元数据来编写。这是一个令人困惑的答案,可能也是一个错误的答案。也许API在2016年到现在之间发生了一些变化,或者我遗漏了一些东西,但Azure Blob上肯定有目录。您可以定义自己的文件夹结构,然后进行导航。使用
.ListBlobs
列出子Blob时,您将获得
IListBlobItem
实现的集合,其中一个是。您尝试过该代码吗?它也会得到所谓的根级“目录”,问题是我必须通过一组云blob项来确定哪些是云目录。我希望能够构建一个目录树,不遍历每个blob项。