Скачивание большого двоичного объекта с помощью Java

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

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

  • В этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Сведения о настройке проекта, включая установку пакетов, добавление import директив и создание авторизованного клиентского объекта, см. в статье "Начало работы с служба хранилища Azure и Java".
  • Механизм авторизации должен иметь разрешения для выполнения операции скачивания. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:

Скачивание большого двоичного объекта

Для скачивания большого двоичного объекта можно использовать любой из следующих методов:

Загрузка по пути к файлу

В следующем примере большой двоичный объект загружается в локальный путь к файлу:

public void downloadBlobToFile(BlobClient blobClient) {
    blobClient.downloadToFile("filepath/local-file.png");
}

Скачивание в поток

В следующем примере скачивает большой двоичный OutputStream объект в объект:

public void downloadBlobToStream(BlobClient blobClient) {
    try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
        blobClient.downloadStream(outputStream);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Скачивание в строку

В следующем примере предполагается, что большой двоичный объект является текстовым файлом и загружает большой двоичный объект в String объект:

public void downloadBlobToText(BlobClient blobClient) {
    String content = blobClient.downloadContent().toString();
    System.out.printf("Blob contents: %s%n", content);
}

Скачивание из потока

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

public void readBlobFromStream(BlobClient blobClient) {
    // Opening a blob input stream allows you to read from a blob through a normal
    // stream interface

    try (BlobInputStream blobStream = blobClient.openInputStream()) {
        blobStream.read();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Скачивание блочного BLOB-объекта с параметрами конфигурации

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

Указание параметров передачи данных при загрузке

Значения в ParallelTransferOptions можно настроить для повышения производительности операций передачи данных. Следующие значения можно настроить для скачивания в зависимости от потребностей приложения:

  • blockSize: максимальный размер блока для передачи каждого запроса. Это значение можно задать с помощью метода setBlockSizeLong .
  • maxConcurrency: максимальное число параллельных запросов, выданных в любое время в рамках одной параллельной передачи. Это значение можно задать с помощью метода setMaxConcurrency .

Добавьте в файл следующую import директиву, чтобы использовать ParallelTransferOptions для скачивания:

import com.azure.storage.common.*;

В следующем примере кода показано, как задать значения и ParallelTransferOptions включить параметры в составе экземпляра BlobDownloadToFileOptions . Значения, указанные в этом примере, не предназначены для рекомендации. Чтобы правильно настроить эти значения, необходимо учитывать конкретные потребности приложения.

public void downloadBlobWithTransferOptions(BlobClient blobClient) {
    ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
            .setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
            .setMaxConcurrency(2);

    BlobDownloadToFileOptions options = new BlobDownloadToFileOptions("<localFilePath>");
    options.setParallelTransferOptions(parallelTransferOptions);

    blobClient.downloadToFileWithResponse(options, null, null);
}

Дополнительные сведения о настройке параметров передачи данных см. в разделе "Настройка производительности" для отправки и скачивания с помощью Java.

Ресурсы

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

Операции REST API

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

Примеры кода

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