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


Вывод списка контейнеров BLOB-объектов с помощью Java

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

Необходимые компоненты

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

Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в статье "Начало работы с Хранилище BLOB-объектов Azure и 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 (рекомендуется), требуется встроенный участник данных хранилища 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 результатов за раз. Чтобы вернуть меньший набор результатов, укажите ненулевое значение размера возвращаемой страницы результатов. Это значение можно задать с помощью следующего метода:

Представленные в этой статье примеры демонстрируют постраничное получение результатов. Дополнительные сведения о концепциях разбиения на страницы см. в статье "Разбиение на страницы" с помощью пакета SDK Azure для Java.

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

Чтобы отфильтровать список контейнеров, укажите строку для параметра 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());
        });
    }
}

Ресурсы

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

Примеры кода

Операции REST API

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

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

См. также

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