Скачивание большого двоичного объекта с помощью 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:
- Получение BLOB-объекта (REST API)