Java を使用して BLOB コンテナーを一覧表示する

Azure Storage アカウント内のコンテナーをコードから一覧表示する際には、Azure Storage からの結果の取得方法を管理するためのオプションをいくつか指定できます。 この記事では、Java 用の Azure Storage クライアント ライブラリを使用してコンテナーを一覧表示する方法について説明します。

前提条件

  • この記事では、Java 用の Azure Blob Storage クライアント ライブラリを操作するようにプロジェクトが既に設定されていることを前提としています。 パッケージのインストール、import ディレクティブの追加、認可されたクライアント オブジェクトの作成など、プロジェクトの設定については、「Azure Storage と Java での作業開始」を参照してください。
  • 認可メカニズム には、BLOB コンテナーを一覧表示するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。

コンテナーの一覧表示のオプションについて

コードからコンテナーを一覧表示する際に、Azure Storage から結果を返す方法を管理するためのオプションを指定できます。 各結果セットで返す結果の数を指定し、後続のセットを取得できます。 プレフィックスで結果をフィルター処理したり、結果を含むコンテナー メタデータを返したりすることもできます。 以降のセクションでは、これらのオプションについて説明します。

ストレージ アカウント内のコンテナーを一覧表示するには、次のメソッドを呼び出します:

このメソッドは、BlobContainerItem 型の イテラブルを返します。 コンテナーは、名前によって辞書順に並べ替えられます。

返される結果の数を管理する

既定では、一覧表示操作では一度に最大 5000 の結果が返されます。 返される結果セットが小さくなるようにするには、返される結果ページのサイズに 0 以外の値を指定します。 次のメソッドを使用してこの値を設定できます:

この記事の例は、結果をページに返す方法を示しています。 改ページの概念の詳細については、「Azure SDK for Java を使用した改ページ」を参照してください。

プレフィックスを使用して結果をフィルター処理する

コンテナーの一覧をフィルター処理するには、 prefixパラメーターの文字列を指定します。 プレフィックス文字列には、1 つ以上の文字を含めることができます。 Azure Storage は、名前がそのプレフィックスで始まるコンテナーだけを返します。 次のメソッドを使用してこの値を設定できます:

コンテナー メタデータを含める

結果にコンテナー メタデータを含めるには、 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 Storage クライアント ライブラリを使用したコンテナーの一覧表示について詳しくは、次のリソースを参照してください。

REST API の操作

Azure SDK for Java には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Java パラダイムを通じて REST API 操作を実施できます。 コンテナーを一覧表示するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。

コード サンプル

クライアント ライブラリのリソース

関連項目