Megosztás a következőn keresztül:


Blob letöltése Java használatával

Ez a cikk bemutatja, hogyan tölthet le egy blobot a Java-hoz készült Azure Storage ügyfélkódtár használatával. Blobadatokat különböző célhelyekre tölthet le, például helyi fájl elérési útját, streamét vagy szöveges sztringet. Megnyithat egy blobstreamet is, és olvashat belőle.

Előfeltételek

Saját környezet beállítása

Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a Java Azure Blob Storage ügyfélkódtárával való együttműködésre. További információ: Az Azure Blob Storage és a Java használatának első lépései.

A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.

Feljegyzés

Ez a cikk a Maven buildelési eszközével hozza létre és futtatja a példakódot. Más buildelési eszközök, például a Gradle is együttműködnek a Java Azure SDK-val.

Csomagok telepítése

Nyissa meg a pom.xml fájlt a szövegszerkesztőben. Telepítse a csomagokat a BOM-fájllal, vagy egy közvetlen függőséget is beleértve.

Importálási utasítások hozzáadása

Adja hozzá a következő import-utasításokat:

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;

Engedélyezés

Az engedélyezési mechanizmusnak rendelkeznie kell a letöltési művelet végrehajtásához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített storage-blobadat-olvasó vagy újabb szerepkörre van szüksége. További információkért tekintse meg a Blob lekérése (REST API) engedélyezési útmutatóját.

Ügyfélobjektum létrehozása

Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt.

Az alábbi példa a BlobServiceClientBuilder használatával BlobServiceClienthoz létre objektumotDefaultAzureCredential, és bemutatja, hogyan hozhat létre tároló- és blobügyfeleket, ha szükséges:

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

Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.

Blob letöltése

A blobok letöltéséhez az alábbi módszerek bármelyikét használhatja:

Letöltés fájlelérési útvonalra

Az alábbi példa egy blobot tölt le egy helyi fájl elérési útjára:

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

Letöltés streambe

Az alábbi példa egy blobot tölt le egy OutputStream objektumba:

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

Letöltés sztringre

Az alábbi példa azt feltételezi, hogy a blob egy szöveges fájl, és letölti a blobot egy String objektumba:

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

Letöltés streamből

Az alábbi példa egy blobot tölt le a BlobInputStream stream megnyitásával és olvasásával:

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

Blokkblob letöltése konfigurációs beállításokkal

Blob letöltésekor megadhatja az ügyfélkódtár konfigurációs beállításait. Ezek a beállítások a teljesítmény javítása és a megbízhatóság növelése érdekében hangolhatók. Az alábbi kódpéldák bemutatják, hogyan definiálhat konfigurációs beállításokat a BlobDownloadToFileOptions használatával egy letöltési módszer meghívásakor.

Adatátviteli beállítások megadása letöltéskor

A ParallelTransferOptionsban értékeket konfigurálhat az adatátviteli műveletek teljesítményének javítása érdekében. Az alábbi értékek az alkalmazás igényeinek megfelelően hangolhatók le a letöltésekhez:

  • blockSize: Az egyes kérések maximális blokkmérete. Ezt az értéket a setBlockSizeLong metódussal állíthatja be.
  • maxConcurrency: Az egy párhuzamos átvitel részeként adott időpontban kibocsátott párhuzamos kérelmek maximális száma. Ezt az értéket a setMaxConcurrency metódussal állíthatja be.

Adja hozzá a következő import irányelveket a fájlhoz a letöltéshez:ParallelTransferOptions

import com.azure.storage.common.*;

Az alábbi példakód bemutatja, hogyan állíthat be értékeket ParallelTransferOptions egy példányhoz, és hogyan foglalhatja bele a beállításokat BlobDownloadToFileOptions . Az ebben a mintában megadott értékek nem javaslatok. Ezeknek az értékeknek a megfelelő finomhangolásához figyelembe kell vennie az alkalmazás adott igényeit.

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

Az adatátviteli beállítások finomhangolásáról további információt a Feltöltések és letöltések teljesítményhangolása a Java használatával című témakörben talál.

Források

Ha többet szeretne megtudni arról, hogyan tölthet le blobokat a Java-hoz készült Azure Blob Storage ügyfélkódtár használatával, tekintse meg az alábbi erőforrásokat.

Kódminták

REST API-műveletek

Az Azure SDK for Java olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Java-paradigmákon keresztül. A blobok letöltéséhez használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:

Ügyfélkódtár erőforrásai