Partilhar via


Baixe um blob com Java

Este artigo mostra como baixar um blob usando a biblioteca de cliente do Armazenamento do Azure para Java. Você pode baixar dados de blob para 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 ler a partir dele.

Pré-requisitos

Configurar o ambiente

Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para Java. Para obter mais informações, consulte Introdução ao Armazenamento de Blobs do Azure e Java.

Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.

Nota

Este artigo usa a ferramenta de compilação Maven para criar e executar o código de exemplo. Outras ferramentas de compilação, como o Gradle, também funcionam com o SDK do Azure para Java.

Instalar pacotes

Abra o arquivo no editor de pom.xml texto. Instale os pacotes incluindo o arquivo BOM ou incluindo uma dependência direta.

Adicionar instruções de importação

Adicione as seguintes instruções 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 RBAC Storage Blob Data Reader 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 Blob, crie uma instância de BlobServiceClient.

O exemplo a seguir usa BlobServiceClientBuilder para criar um BlobServiceClient objeto usando DefaultAzureCredentialo , 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 de cliente, consulte Criar e gerenciar objetos de cliente que interagem com recursos de dados.

Transferir um blob

Você pode usar qualquer um dos seguintes métodos para baixar um blob:

Baixar para 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");
}

Transferir para um fluxo

O exemplo a seguir baixa um blob para um OutputStream objeto:

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

Download para uma cadeia de caracteres

O exemplo a seguir pressupõe que o blob é um arquivo de texto e baixa o blob para um String objeto:

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

Download de um fluxo

O exemplo a seguir 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 bloco com opções de configuração

Você pode definir opções de configuração da biblioteca do cliente 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 BlobDownloadToFileOptions para definir 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 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 esse valor usando o método setBlockSizeLong .
  • maxConcurrency: O número máximo de pedidos paralelos emitidos num determinado momento como parte de uma única transferência paralela. Você pode definir esse valor usando o método setMaxConcurrency .

Adicione a seguinte import diretiva ao seu arquivo para usar ParallelTransferOptions em um download:

import com.azure.storage.common.*;

O exemplo de código a seguir mostra como definir valores para ParallelTransferOptions e incluir as opções como parte de uma BlobDownloadToFileOptions instância. Os valores fornecidos neste exemplo não pretendem ser uma recomendação. Para ajustar corretamente 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, consulte Ajuste de desempenho para uploads e downloads com Java.

Recursos

Para saber mais sobre como baixar blobs usando a biblioteca de cliente do Armazenamento de Blobs do Azure para Java, consulte os recursos a seguir.

Amostras de código

Operações da API REST

O SDK do Azure para Java contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas Java familiares. Os métodos da biblioteca de cliente para baixar blobs usam a seguinte operação da API REST:

Recursos da biblioteca do cliente

  • Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Build your Java app.