使用 Java 列出 Blob 容器

通过代码列出 Azure 存储帐户中的容器时,可以指定多个选项来管理如何从 Azure 存储返回结果。 本文介绍如何使用适用于 Java 的 Azure 存储客户端库列出容器。

先决条件

  • 本文假设已经设置了项目来使用适用于 Java 的 Azure Blob 存储客户端库。 要了解有关设置项目的信息,包括包安装、添加 import 指令和创建授权客户端对象,请参阅开始使用 Azure 存储和 Java
  • 授权机制必须具有列出 blob 容器的权限。 要了解详细信息,请参阅以下 REST API 操作的授权指南:

关于容器列出选项

通过代码列出容器时,可以指定选项来管理如何从 Azure 存储返回结果。 可以指定要在每个结果集中返回的结果数,然后检索后续结果集。 还可以按前缀筛选结果,并将容器元数据与结果一起返回。 后续部分将介绍这些选项。

若要列出存储帐户中的容器,请调用以下方法:

此方法返回可迭代的 BlobContainerItem 类型。 容器按名称的字典顺序排序。

管理要返回的结果数

默认情况下,列出操作每次最多返回 5000 个结果。 若要返回更小的结果集,请为要返回的结果页的大小提供非零值。 可以使用以下方法设置此值:

本文演示的示例说明了如何在页面中返回结果。 要详细了解分页概念,请参阅使用适用于 Java 的 Azure SDK 进行分页

使用前缀筛选结果

若要筛选容器列表,请为 prefix 参数指定一个字符串。 前缀字符串可以包含一个或多个字符。 然后,Azure 存储只返回其名称以该前缀开头的容器。 可以使用以下方法设置此值:

包含容器元数据

若要在结果中包含容器元数据,请创建一个 BlobContainerListDetails 实例,并将 true 传递给以下方法:

然后将 BlobContainerListDetails 对象传递给以下方法:

包含已删除的容器

若要在结果中包含软删除的容器,请创建一个 BlobContainerListDetails 实例,并将 true 传递给以下方法:

然后将 BlobContainerListDetails 对象传递给以下方法:

代码示例

以下示例列出容器,并按指定的前缀筛选结果:

public void listContainers(BlobServiceClient blobServiceClient) {
    // Set a prefix to filter results based on a specified character or string
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setPrefix("container-");

    System.out.println("List containers:");
    for (BlobContainerItem blobContainerItem : blobServiceClient.listBlobContainers(options, null)) {
        System.out.printf("Container name: %s%n", blobContainerItem.getName());
    }
}

还可以通过指定要返回的结果页的大小来返回更小的结果集:

public void listContainersWithPaging(BlobServiceClient blobServiceClient) {
    // Set a prefix to filter results and specify a page limit
    ListBlobContainersOptions options = new ListBlobContainersOptions()
            .setMaxResultsPerPage(2)  // Low number for demonstration purposes
            .setPrefix("container-");

    int i = 0;
    Iterable<PagedResponse<BlobContainerItem>> blobContainerPages = blobServiceClient
            .listBlobContainers(options, null).iterableByPage();
    for (PagedResponse<BlobContainerItem> page : blobContainerPages) {
        System.out.printf("Page %d%n", ++i);
        page.getElements().forEach(container -> {
            System.out.printf("Name: %s%n", container.getName());
        });
    }
}

资源

若要详细了解如何使用适用于 Java 的 Azure Blob 存储客户端库来列出容器,请参阅以下资源。

REST API 操作

Azure SDK for Java 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 Java 范例与 REST API 操作进行交互。 用于列出容器的客户端库方法使用以下 REST API 操作:

代码示例

客户端库资源

另请参阅