Baixar um blob com Java
Este artigo mostra como baixar um blob usando a biblioteca de clientes de Armazenamento do Microsoft Azure para Java. Você pode baixar dados de blob em vários destinos, incluindo um caminho de arquivo local, fluxo ou cadeia de caracteres de texto. Você também pode abrir um fluxo de blob e lê-lo.
Pré-requisitos
- Assinatura do Azure - criar uma gratuitamente
- Conta de armazenamento do Azure – criar uma conta de armazenamento
- JDK (Java Development Kit) versão 8 ou posterior (recomendamos a versão 17 para ter a melhor experiência)
- O Apache Maven é usado para o gerenciamento de projetos neste exemplo
Configure seu ambiente
Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para que ele funcione com a biblioteca de clientes do Armazenamento de Blobs do Azure para Java. Para obter mais informações, confira Introdução ao Armazenamento de Blobs do Azure e ao Java.
Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.
Observação
Este artigo usa a ferramenta de build do Maven para compilar e executar o código de exemplo. Outras ferramentas de build, como o Gradle, também funcionam com o SDK do Azure para Java.
Instalar Pacotes
Abra o arquivo pom.xml
no seu editor de texto. Instale os pacotes incluindo o arquivo BOM ou incluindo uma dependência direta.
Adicionar instruções de importação
Adicione as seguintes declarações de import
:
import com.azure.storage.blob.*;
import com.azure.storage.common.*;
import com.azure.storage.blob.options.BlobDownloadToFileOptions;
import com.azure.storage.blob.specialized.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
Autorização
O mecanismo de autorização deve ter as permissões necessárias para executar uma operação de download. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure Leitor de Dados de Blob de Armazenamento ou superior. Para saber mais, consulte as diretrizes de autorização para Obter Blob (API REST).
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância do BlobServiceClient.
O exemplo a seguir usa BlobServiceClientBuilder para criar um objeto BlobServiceClient
usando DefaultAzureCredential
e mostra como criar clientes de contêiner e blob, se necessário:
// 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>");
Para saber mais sobre como criar e gerenciar objetos clientes, confira Criar e gerenciar objetos clientes que interagem com recursos de dados.
Baixar um blob
Você pode usar qualquer um dos seguintes métodos para baixar um blob:
Download em um caminho de arquivo
O exemplo a seguir baixa um blob para um caminho de arquivo local:
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Download em um fluxo
O exemplo a seguir baixa um blob para um objeto OutputStream
:
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Download em uma cadeia de caracteres
O exemplo a seguir pressupõe que o blob é um arquivo de texto e baixa o blob em um objeto String
:
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Download de um fluxo
O seguinte exemplo baixa um blob abrindo um BlobInputStream
e lendo do fluxo:
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();
}
}
Baixar um blob de blocos com opções de configuração
Você pode definir as opções de configuração da biblioteca de clientes ao baixar um blob. Essas opções podem ser ajustadas para melhorar o desempenho e aumentar a confiabilidade. Os exemplos de código a seguir mostram como usar BlobDownloadToOptions para definir as opções de configuração ao chamar um método de download.
Especificar opções de transferência de dados durante o download
Você pode configurar os valores em ParallelTransferOptions para melhorar o desempenho das operações de transferência de dados. Os seguintes valores podem ser ajustados para downloads com base nas necessidades do seu aplicativo:
blockSize
: o tamanho máximo do bloco a ser transferido para cada solicitação. Você pode definir este valor usando o método setBlockSizeLong.maxConcurrency
: o número máximo de solicitações paralelas emitidas a qualquer momento como parte de uma única transferência paralela. Você pode definir este valor usando o método setMaxConcurrency.
Adicione a seguinte diretiva import
ao seu arquivo para usar ParallelTransferOptions
para um download:
import com.azure.storage.common.*;
O exemplo de código a seguir mostra como definir valores para ParallelTransferOptions
e inclui as opções como parte de uma instância BlobDownloadToFileOptions
. Os valores fornecidos neste exemplo não se destinam a ser uma recomendação. Para ajustar adequadamente esses valores, você precisa considerar as necessidades específicas do seu aplicativo.
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);
}
Para saber mais sobre como ajustar as opções de transferência de dados, confira Ajuste de desempenho para uploads e downloads com Java.
Recursos
Para saber mais sobre como baixar blobs usando a biblioteca de clientes de Armazenamento de Blobs do Azure para Java, consulte os seguintes recursos:
Exemplos de código
Operações da API REST
O SDK do Azure para Java contém bibliotecas que criam sobre a API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do Java. Os métodos da biblioteca de clientes para baixar blobs usam a seguinte operação da API REST:
- Obter um blob (API REST)
Recursos da biblioteca de clientes
- Documentação de referência da biblioteca de clientes
- Código-fonte da biblioteca de clientes
- Pacote (Maven)
Conteúdo relacionado
- Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Para saber mais, veja a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo Java.