Herunterladen eines Blobs mit Java
In diesem Artikel wird beschrieben, wie ein Blob mithilfe der Azure Storage-Clientbibliothek für Java heruntergeladen wird. Sie können Blobdaten an verschiedene Ziele herunterladen, einschließlich einen lokalen Dateipfad, einen Stream oder eine Textzeichenfolge. Sie können auch einen Blobstream öffnen und daraus lesen.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Java Development Kit (JDK) Version 8 oder höher (wir empfehlen Version 17 für optimale Benutzererfahrung)
- Für die Projektverwaltung wird in diesem Beispiel Apache Maven verwendet.
Erstellen Ihrer Umgebung
Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Java einrichten. Weitere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage mit Java.
Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.
Hinweis
In diesem Artikel wird das Maven-Buildtool verwendet, um den Beispielcode zu erstellen und auszuführen. Andere Buildtools (beispielsweise Gradle) können ebenfalls mit dem Azure SDK für Java verwendet werden.
Installieren von Paketen
Öffnen Sie die Datei pom.xml
in Ihrem Text-Editor. Installieren Sie die Pakete durch Einbeziehen der BOM-Datei oder Einbeziehen einer direkten Abhängigkeit.
Hinzufügen von Importanweisungen
Fügen Sie die folgenden import
-Anweisungen ein:
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;
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Ausführen eines Downloadvorgangs verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Storage-Blobdatenleser. Weitere Informationen finden Sie im Autorisierungsleitfaden für Abrufen des Blobs (REST-API).
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie eine Instanz von BlobServiceClient.
Im folgenden Beispiel wird BlobServiceClientBuilder verwendet, um ein BlobServiceClient
-Objekt mithilfe von DefaultAzureCredential
zu erstellen, und zeigt, wie Container- und Blob-Clients erstellt werden, falls erforderlich:
// 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>");
Weitere Informationen zum Erstellen und Verwalten von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.
Herunterladen eines Blobs
Sie können eine der folgenden Methoden verwenden, um ein Blob herunterzuladen:
Herunterladen in einen Dateipfad
Das folgende Beispiel lädt ein Blob in einen lokalen Dateipfad herunter:
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Herunterladen in einen Stream
Das folgende Beispiel lädt ein Blob in ein OutputStream
-Objekt herunter:
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Herunterladen in eine Zeichenfolge
Das folgende Beispiel geht davon aus, dass es sich bei dem Blob um eine Textdatei handelt, und es lädt das Blob in ein String
-Objekt herunter:
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Herunterladen aus einem Stream
Im folgenden Beispiel wird ein Blob heruntergeladen, indem ein BlobInputStream
geöffnet und aus diesem Stream gelesen wird:
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();
}
}
Herunterladen eines Blockblobs mit Konfigurationsoptionen
Beim Herunterladen eines Blobs können Sie Konfigurationsoptionen für die Clientbibliothek definieren. Diese Optionen können feiner abgestimmt werden, um die Leistung und Zuverlässigkeit zu verbessern. In den folgenden Codebeispielen wird gezeigt, wie Sie Konfigurationsoptionen mithilfe von BlobUploadOptions beim Aufrufen einer Downloadmethode definieren.
Angeben von Datenübertragungsoptionen beim Download
Sie können Werte unter ParallelTransferOptions konfigurieren, um die Leistung für Datenübertragungsvorgänge zu verbessern. Die folgenden Werte können basierend auf den Anforderungen Ihrer App für Downloads optimiert werden:
blockSize
: Die maximale zu übertragende Blockgröße für jede Anforderung fest. Sie können diesen Wert mit der Methode setBlockSizeLong festlegen.maxConcurrency
: Die maximale Anzahl paralleler Anforderungen, die zu einem bestimmten Zeitpunkt im Rahmen einer einzelnen parallelen Übertragung ausgegeben werden. Sie können diesen Wert mit der Methode setMaxConcurrency festlegen.
Fügen Sie Ihrer Datei die folgende import
-Anweisung für einen Download mit ParallelTransferOptions
hinzu:
import com.azure.storage.common.*;
Im folgenden Codebeispiel wird gezeigt, wie Sie Werte für ParallelTransferOptions
festlegen und die Optionen als Teil einer BlobDownloadToFileOptions
-Instanz einschließen. Die in diesem Beispiel angegebenen Werte sind nicht als Empfehlungen zu verstehen. Zur ordnungsgemäßen Optimierung dieser Werte müssen die spezifischen Anforderungen Ihrer App berücksichtigt werden.
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);
}
Weitere Informationen zur Feinabstimmung von Datenübertragungsoptionen finden Sie unter Leistungsoptimierung für Uploads und Downloads mit Java.
Ressourcen
Weitere Informationen zum Herunterladen von Blobs mithilfe der Azure Blob Storage-Clientbibliothek für Java finden Sie in den folgenden Ressourcen.
Codebeispiele
REST-API-Vorgänge
Das SDK für Java enthält Bibliotheken, die auf der zugrunde liegenden Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Java-Paradigmen. Die Methoden der Clientbibliothek zum Herunterladen von Blobs verwenden den folgenden REST-API-Vorgang:
- Get Blob (REST-API)
Ressourcen zur Clientbibliothek
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Java. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Java-App.