Share via


Een blob downloaden met Java

In dit artikel wordt beschreven hoe u een blob downloadt met behulp van de Azure Storage-clientbibliotheek voor Java. U kunt blobgegevens downloaden naar verschillende bestemmingen, waaronder een lokaal bestandspad, een stroom of een tekenreeks. U kunt ook een blobstream openen en ermee lezen.

Vereisten

Uw omgeving instellen

Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor Java. Zie Aan de slag met Azure Blob Storage en Java voor meer informatie.

Als u wilt werken met de codevoorbeelden in dit artikel, volgt u deze stappen om uw project in te stellen.

Notitie

In dit artikel wordt het Maven-buildhulpprogramma gebruikt om de voorbeeldcode te bouwen en uit te voeren. Andere buildhulpprogramma's, zoals Gradle, werken ook met de Azure SDK voor Java.

Pakketten installeren

Open het pom.xml bestand in de teksteditor. Installeer de pakketten door het BOM-bestand op te slaan of door een directe afhankelijkheid op te slaan.

Importinstructies toevoegen

Voeg de volgende import instructies toe:

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;

Autorisatie

Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een downloadbewerking uit te voeren. Voor autorisatie met Microsoft Entra-id (aanbevolen) hebt u ingebouwde Azure RBAC-rol opslagblobgegevenslezer of hoger nodig. Zie de autorisatierichtlijnen voor Het ophalen van blob (REST API) voor meer informatie.

Een clientobject maken

Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient.

In het volgende voorbeeld wordt BlobServiceClientBuilder gebruikt om een BlobServiceClient object te bouwen met behulp vanDefaultAzureCredential, en ziet u hoe u indien nodig container- en blobclients maakt:

// 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>");

Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.

Blob downloaden

U kunt een van de volgende methoden gebruiken om een blob te downloaden:

Downloaden naar een bestandspad

In het volgende voorbeeld wordt een blob gedownload naar een lokaal bestandspad:

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

Downloaden naar een stream

In het volgende voorbeeld wordt een blob gedownload naar een OutputStream object:

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

Downloaden naar een tekenreeks

In het volgende voorbeeld wordt ervan uitgegaan dat de blob een tekstbestand is en dat de blob wordt gedownload naar een String object:

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

Downloaden uit een stream

In het volgende voorbeeld wordt een blob gedownload door een BlobInputStream blob te openen en uit de stream te lezen:

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();
    }
}

Een blok-blob downloaden met configuratieopties

U kunt configuratieopties voor clientbibliotheek definiëren bij het downloaden van een blob. Deze opties kunnen worden afgestemd om de prestaties te verbeteren en de betrouwbaarheid te verbeteren. In de volgende codevoorbeelden ziet u hoe u BlobDownloadToFileOptions gebruikt om configuratieopties te definiëren bij het aanroepen van een downloadmethode.

Opties voor gegevensoverdracht opgeven bij downloaden

U kunt waarden in ParallelTransferOptions configureren om de prestaties voor gegevensoverdrachtbewerkingen te verbeteren. De volgende waarden kunnen worden afgestemd op downloads op basis van de behoeften van uw app:

  • blockSize: De maximale blokgrootte die moet worden overgedragen voor elke aanvraag. U kunt deze waarde instellen met behulp van de methode setBlockSizeLong .
  • maxConcurrency: Het maximum aantal parallelle aanvragen dat op een bepaald moment wordt uitgegeven als onderdeel van één parallelle overdracht. U kunt deze waarde instellen met behulp van de methode setMaxConcurrency .

Voeg de volgende import instructie toe aan uw bestand om te gebruiken ParallelTransferOptions voor een download:

import com.azure.storage.common.*;

In het volgende codevoorbeeld ziet u hoe u waarden instelt voor ParallelTransferOptions en de opties opneemt als onderdeel van een BlobDownloadToFileOptions exemplaar. De waarden in dit voorbeeld zijn niet bedoeld als aanbeveling. Als u deze waarden goed wilt afstemmen, moet u rekening houden met de specifieke behoeften van uw app.

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);
}

Zie Prestaties afstemmen voor uploads en downloads met Java voor meer informatie over het afstemmen van opties voor het afstemmen van gegevensoverdracht.

Resources

Zie de volgende resources voor meer informatie over het downloaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor Java.

Codevoorbeelden

REST API-bewerkingen

De Azure SDK voor Java bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende Java-paradigma's. De clientbibliotheekmethoden voor het downloaden van blobs gebruiken de volgende REST API-bewerking:

  • Blob ophalen (REST API)

Clientbibliotheekbronnen

  • Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Java. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Uw Java-app bouwen voor meer informatie.