Поделиться через


Список BLOB-контейнеров в Java

При перечислении контейнеров в учетной записи хранилища Azure из вашего кода можно указать несколько параметров для управления возвратом результатов из службы хранилища Azure. В этой статье показано, как перечислить контейнеры с помощью клиентской библиотеки Azure Storage для Java.

Предварительные требования

Настройка среды

Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в статье "Начало работы с Azure Blob Storage и Java".

Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.

Примечание.

В этой статье используется средство сборки Maven для создания и запуска примера кода. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.

Установка пакетов

Откройте файл pom.xml в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.

Добавление инструкций импорта

Добавьте следующие операторы import :

import com.azure.core.http.rest.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;

Авторизация

Механизм авторизации должен иметь необходимые разрешения для доступа к списку контейнеров BLOB. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется), вам нужна встроенная роль RBAC Azure Участник данных BLOB-хранилища или выше. Дополнительные сведения см. в руководстве по авторизации для контейнеров списка (REST API).

Создание клиентского объекта

Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient.

В следующем примере используется BLOBServiceClientBuilder для создания BlobServiceClient объекта с помощью DefaultAzureCredentialи показано, как создать клиенты контейнеров и BLOB-объектов при необходимости:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.

Сведения о параметрах перечисления контейнеров

При перечислении контейнеров из кода можно указать параметры для управления получением результатов из службы хранилища Azure. Можно указать число возвращаемых результатов в каждом наборе результатов, а затем извлечь последующие наборы. Вы также можете фильтровать результаты по префиксу и возвращать метаданные контейнера с результатами. Описание этих параметров приводится в следующих разделах.

Чтобы перечислить контейнеры в учетной записи хранения, вызовите следующий метод:

Этот метод возвращает итератор типа BlobContainerItem. Контейнеры упорядочены лексографически по имени.

Управление количеством возвращаемых результатов

По умолчанию операция перечисления возвращает до 5000 результатов за раз. Чтобы вернуть меньший набор результатов, укажите ненулевое значение размера возвращаемой страницы результатов. Это значение можно задать с помощью следующего метода:

Примеры, представленные в этой статье, показывают, как возвращать результаты постранично. Дополнительные сведения о концепциях пагинации см. в разделе Pagination with the Azure SDK for Java.

Фильтрация результатов с помощью префикса

Чтобы отфильтровать список контейнеров, укажите строку для параметра prefix. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те контейнеры, имена которых начинаются с этого префикса. Это значение можно задать с помощью следующего метода:

Включение метаданных контейнера

Чтобы включить метаданные контейнера в результаты, создайте BlobContainerListDetails экземпляр и передайте true в следующий метод.

Затем передайте объект BlobContainerListDetails в следующий метод:

Включить удаленные контейнеры

Чтобы включить мягко удаленные контейнеры с результатами, создайте BlobContainerListDetails экземпляр и передайте его в следующий метод:

Затем, передайте объект в 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());
        });
    }
}

Ресурсы

Дополнительные сведения о перечислении контейнеров с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.

Примеры кода

Операции REST API

Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для перечисления контейнеров используют следующую операцию REST API:

Ресурсы клиентской библиотеки

См. также

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Java.