Condividi tramite


Scaricare un BLOB con Java

Questo articolo illustra come scaricare un BLOB usando la libreria client di Archiviazione di Azure per Java. È possibile scaricare dati BLOB in varie destinazioni, tra cui un percorso di file locale, un flusso o una stringa di testo. È anche possibile aprire un flusso BLOB e leggerlo.

Prerequisiti

  • Questo articolo presuppone che sia già stato configurato un progetto per l'uso con la libreria client di Archiviazione BLOB di Azure per Java. Per informazioni sulla configurazione del progetto, incluse l'installazione del pacchetto, l'aggiunta di direttive import e la creazione di un oggetto client autorizzato, vedere Introduzione ad Archiviazione di Azure e Java.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni per eseguire un'operazione di download. Per altre informazioni, vedere le linee guida per l'autorizzazione per l'operazione API REST seguente:

Scaricare un BLOB

Per scaricare un BLOB è possibile usare uno o più dei metodi seguenti:

Scaricare in un percorso di file

L'esempio seguente scarica un BLOB in un percorso di file locale:

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

Scaricare in un flusso

L'esempio seguente scarica un BLOB in un oggetto OutputStream:

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

Scaricare in una stringa

L'esempio seguente presuppone che il BLOB sia un file di testo e scarica il BLOB in un oggetto String:

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

Scaricare da un flusso

L'esempio seguente scarica un BLOB aprendo un oggetto BlobInputStream e leggendo dal flusso:

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

Scaricare un BLOB in blocchi con le opzioni di configurazione

È possibile definire le opzioni di configurazione della libreria client durante il download di un BLOB. Queste opzioni possono essere ottimizzate per migliorare le prestazioni e l'affidabilità. Gli esempi di codice seguenti illustrano come usare BlobDownloadToOptions per definire le opzioni di configurazione quando si chiama un metodo di download.

Specificare le opzioni di trasferimento dei dati al download

È possibile configurare valori in ParallelTransferOptions per migliorare le prestazioni delle operazioni di trasferimento dei dati. È possibile ottimizzare i valori seguenti relativi ai download in base alle esigenze dell'app:

  • blockSize: dimensioni massime del blocco da trasferire per ogni richiesta. È possibile impostare questo valore usando il metodo setBlockSizeLong.
  • maxConcurrency: numero massimo di richieste parallele generate in qualsiasi momento come parte di un singolo trasferimento parallelo. È possibile impostare questo valore usando il metodo setMaxConcurrency.

Aggiungere la direttiva import seguente al file per usare ParallelTransferOptions per un download:

import com.azure.storage.common.*;

L'esempio di codice seguente illustra come impostare i valori per ParallelTransferOptions e includere le opzioni come parte di un'istanza di BlobDownloadToFileOptions. I valori forniti in questo esempio non sono necessariamente quelli consigliati. Per ottimizzare correttamente questi valori è necessario considerare le esigenze specifiche dell'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);
}

Per altre informazioni sull'ottimizzazione delle opzioni di trasferimento dei dati, vedere Ottimizzazione delle prestazioni per i caricamenti e i download con Java.

Risorse

Per altre informazioni su come scaricare i BLOB tramite la libreria client di Archiviazione BLOB di Azure per Java, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per Java contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Java noti. I metodi della libreria client per scaricare i BLOB usano l'operazione API REST seguente:

Esempi di codice

Risorse della libreria client