Hochladen, Herunterladen und Auflisten von Blobs mit der Clientbibliothek für Java v7How to upload, download, and list blobs using the client library for Java v7

In dieser Anleitung erfahren Sie, wie Sie mit der Clientbibliothek für Java v7 Blockblobs in einem Container in Azure Blob Storage hochladen, herunterladen und auflisten.In this how-to guide, you learn how to use the client library for Java v7 to upload, download, and list block blobs in a container in Azure Blob storage.

Tipp

Die neueste Version der Azure Storage-Clientbibliothek für Java ist v10.The latest version of the Azure Storage client library for Java is v10. Microsoft empfiehlt, nach Möglichkeit die neueste Version der Clientbibliothek zu verwenden.Microsoft recommends that you use the latest version of the client library when possible. Informationen zum Einstieg in v10 finden Sie unter Schnellstart: Hochladen, Herunterladen und Auflisten von Blobs mit dem Java Storage SDK v10.To get started using v10, see Quickstart: Upload, download, and list blobs by using the Java Storage SDK V10.

VoraussetzungenPrerequisites

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

Erstellen Sie auch ein Azure-Speicherkonto im Azure-Portal.Also create an Azure storage account in the Azure portal. Hilfe zur Erstellung des Kontos finden Sie unter Erstellen eines Speicherkontos.For help creating the account, see Create a storage account.

Stellen zu sicher, dass die folgenden Voraussetzungen erfüllt sind:Make sure you have the following prerequisites:

  • Installieren Sie eine IDE mit Maven-Integration.Install an IDE that has Maven integration.

  • Alternativ können Sie Maven installieren und so konfigurieren, dass es über die Befehlszeile verwendet werden kann.Alternatively, install and configure Maven to work from the command line.

In dieser Anleitung wird Eclipse mit der Konfiguration „Eclipse-IDE für Java-Entwickler“ verwendet.This guide uses Eclipse with the "Eclipse IDE for Java Developers" configuration.

Herunterladen der BeispielanwendungDownload the sample application

Die Beispielanwendung ist eine einfache Konsolenanwendung.The sample application is a basic console application.

Verwenden Sie Git, um eine Kopie der Anwendung in Ihre Entwicklungsumgebung herunterzuladen.Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/storage-blobs-java-quickstart.git

Mit diesem Befehl wird das Repository in Ihren lokalen Git-Ordner geklont.This command clones the repository to your local git folder. Um das Projekt zu öffnen, starten Sie Eclipse, und schließen Sie die Willkommensseite.To open the project, launch Eclipse and close the Welcome screen. Wählen Sie File (Datei) und anschließend Open Projects from File System (Projekte aus Dateisystem öffnen) aus.Select File then Open Projects from File System. Stellen Sie sicher, dass Detect and configure project natures (Projektarten erkennen und konfigurieren) aktiviert ist.Make sure Detect and configure project natures is checked. Wählen Sie Directory (Verzeichnis) aus, und navigieren Sie zum Speicherort des geklonten Repositorys.Select Directory then navigate to where you stored the cloned repository. Wählen Sie innerhalb des geklonten Repositorys den Ordner blobAzureApp aus.Inside the cloned repository, select the blobAzureApp folder. Vergewissern Sie sich, dass das Projekt blobAzureApp als Eclipse-Projekt angezeigt wird, und wählen Sie anschließend Finish (Fertig stellen) aus.Make sure the blobAzureApp project appears as an Eclipse project, then select Finish.

Nachdem das Importieren des Projekts abgeschlossen ist, öffnen Sie AzureApp.java (unter blobQuickstart.blobAzureApp in src/main/java), und ersetzen Sie accountname und accountkey in der storageConnectionString-Zeichenfolge.Once the project finishes importing, open AzureApp.java (located in blobQuickstart.blobAzureApp inside of src/main/java), and replace the accountname and accountkey inside of the storageConnectionString string. Führen Sie die Anwendung dann aus.Then run the application. Spezifische Anweisungen für diese Aufgaben finden Sie in den folgenden Abschnitten.Specific instructions for completing these tasks are described in the following sections.

Kopieren Ihrer Anmeldeinformationen aus dem Azure-PortalCopy your credentials from the Azure portal

Die Beispielanwendung muss den Zugriff auf Ihr Speicherkonto authentifizieren.The sample application needs to authenticate access to your storage account. Fügen Sie zum Authentifizieren der Anwendung die Anmeldeinformationen für Ihr Speicherkonto in Form einer Verbindungszeichenfolge hinzu.To authenticate, add your storage account credentials to the application as a connection string. Führen Sie zum Anzeigen der Anmeldeinformationen Ihres Speicherkontos die folgenden Schritte aus:View your storage account credentials by following these steps:

  1. Navigieren Sie zum Azure-Portal.Navigate to the Azure portal.

  2. Suchen Sie nach Ihrem Speicherkonto.Locate your storage account.

  3. Wählen Sie im Abschnitt Einstellungen der Speicherkontoübersicht die Option Zugriffsschlüssel.In the Settings section of the storage account overview, select Access keys. Hier können Sie Ihre Kontozugriffsschlüssel und die vollständige Verbindungszeichenfolge für jeden Schlüssel anzeigen.Here, you can view your account access keys and the complete connection string for each key.

  4. Suchen Sie unter key1 nach dem Wert für die Verbindungszeichenfolge, und wählen Sie dann die Schaltfläche Kopieren, um die Verbindungszeichenfolge zu kopieren.Find the Connection string value under key1, and select the Copy button to copy the connection string. Der Wert der Verbindungszeichenfolge wird in einem späteren Schritt einer Umgebungsvariablen hinzugefügt.You will add the connection string value to an environment variable in the next step.

    Screenshot: Kopieren einer Verbindungszeichenfolge aus dem Azure-Portal

Konfigurieren der SpeicherverbindungszeichenfolgeConfigure your storage connection string

Sie müssen in der Anwendung die Verbindungszeichenfolge für das Speicherkonto angeben.In the application, you must provide the connection string for your storage account. Öffnen Sie die Datei AzureApp.Java.Open the AzureApp.Java file. Suchen Sie die Variable storageConnectionString, und fügen Sie den Wert der Verbindungszeichenfolge ein, den Sie im vorherigen Abschnitt kopiert haben.Find the storageConnectionString variable and paste the connection string value that you copied in the previous section. Die Variable storageConnectionString sollte in etwa wie im folgenden Codebeispiel aussehen:Your storageConnectionString variable should look similar to the following code example:

public static final String storageConnectionString =
"DefaultEndpointsProtocol=https;" +
"AccountName=<account-name>;" +
"AccountKey=<account-key>";

Ausführen des BeispielsRun the sample

Diese Beispielanwendung erstellt eine Testdatei in Ihrem Standardverzeichnis (C:\Benutzer<Benutzer>\AppData\Local\Temp für Windows-Benutzer), lädt diese in Blob Storage hoch, listet die Blobs im Container auf und lädt die Datei dann mit einem neuen Namen herunter, sodass Sie die alte und die neue Datei vergleichen können.This sample application creates a test file in your default directory (C:\Users<user>\AppData\Local\Temp, for Windows users), uploads it to Blob storage, lists the blobs in the container, then downloads the file with a new name so you can compare the old and new files.

Führen Sie das Beispiel mithilfe von Maven über die Befehlszeile aus.Run the sample using Maven at the command line. Öffnen Sie eine Shell, und navigieren Sie in Ihrem geklonten Verzeichnis zu blobAzureApp.Open a shell and navigate to blobAzureApp inside of your cloned directory. Geben Sie dann mvn compile exec:java ein.Then enter mvn compile exec:java.

Das folgende Beispiel zeigt die Ausgabe für Benutzer, die die Anwendung unter Windows ausführen.The following example shows the output if you were to run the application on Windows.

Azure Blob storage quick start sample
Creating container: quickstartcontainer
Creating a sample file at: C:\Users\<user>\AppData\Local\Temp\sampleFile514658495642546986.txt
Uploading the sample file 
URI of blob is: https://myexamplesacct.blob.core.windows.net/quickstartcontainer/sampleFile514658495642546986.txt
The program has completed successfully.
Press the 'Enter' key while in the console to delete the sample files, example container, and exit the application.

Deleting the container
Deleting the source, and downloaded files

Überprüfen Sie, ob die Beispieldatei in Ihrem Standardverzeichnis (C:\Benutzer<Benutzer>\AppData\Local\Temp für Windows-Benutzer) vorhanden ist, bevor Sie fortfahren.Before you continue, check your default directory (C:\Users<user>\AppData\Local\Temp, for Windows users) for the sample file. Kopieren Sie die URL für das Blob aus dem Konsolenfenster, und fügen Sie sie in einem Browser ein, um den Inhalt der Datei in Blob Storage anzuzeigen.Copy the URL for the blob out of the console window and paste it into a browser to view the contents of the file in Blob storage. Wenn Sie die Beispieldatei in Ihrem Verzeichnis mit dem in Blob Storage gespeicherten Inhalt vergleichen, sehen Sie, dass sie identisch sind.If you compare the sample file in your directory with the contents stored in Blob storage, you will see that they are the same.

Hinweis

Sie können zum Anzeigen der Dateien in Blob Storage auch ein Tool, z.B. den Azure Storage-Explorer, verwenden.You can also use a tool such as the Azure Storage Explorer to view the files in Blob storage. Der Azure Storage-Explorer ist ein kostenloses plattformübergreifendes Tool, das Ihnen den Zugriff auf die Speicherkontoinformationen ermöglicht.Azure Storage Explorer is a free cross-platform tool that allows you to access your storage account information.

Nachdem Sie die Dateien erfolgreich überprüft haben, drücken Sie dieEINGABETASTE, um die Demo zu beenden und die Testdateien zu löschen.After you've verified the files, press the Enter key to finish the demo and delete the test files. Da Sie jetzt wissen, welche Aktionen das Beispiel ausführt, öffnen Sie die Datei AzureApp.java, um den Code zu betrachten.Now that you know what the sample does, open the AzureApp.java file to look at the code.

Grundlagen des BeispielcodesUnderstand the sample code

Als Nächstes gehen wir schrittweise durch den Beispielcode, damit Sie verstehen können, wie er funktioniert.Next, we walk through the sample code so that you can understand how it works.

Abrufen von Verweisen auf die SpeicherobjekteGet references to the storage objects

Zunächst müssen die Verweise auf die Objekte erstellt werden, die zum Zugreifen auf und Verwalten von Blob Storage verwendet werden.The first thing to do is create the references to the objects used to access and manage Blob storage. Diese Objekte bauen aufeinander auf – jedes wird vom jeweils nächsten in der Liste verwendet.These objects build on each other -- each is used by the next one in the list.

  • Erstellen Sie eine Instanz des CloudStorageAccount-Objekts, das auf das Speicherkonto verweist.Create an instance of the CloudStorageAccount object pointing to the storage account.

    Das CloudStorageAccount-Objekt ist eine Darstellung Ihres Speicherobjekts, und es ermöglicht den programmgesteuerten Zugriff und das programmgesteuerte Festlegen von Eigenschaften des Speicherkontos.The CloudStorageAccount object is a representation of your storage account and it allows you to set and access storage account properties programmatically. Mithilfe des CloudStorageAccount-Objekts können Sie eine Instanz von CloudBlobClient erstellen, was für den Zugriff auf den Blob-Dienst erforderlich ist.Using the CloudStorageAccount object you can create an instance of the CloudBlobClient, which is necessary to access the blob service.

  • Erstellen Sie eine Instanz des CloudBlobClient-Objekts, das auf den Blob-Dienst im Speicherkonto verweist.Create an instance of the CloudBlobClient object, which points to the Blob service in your storage account.

    Der Cloudblobclient (CloudBlobClient) stellt einen Zugriffspunkt für den Blob-Dienst zur Verfügung, mit dem Sie programmgesteuert auf Blob-Speichereigenschaften zugreifen und sie festlegen können.The CloudBlobClient provides you a point of access to the blob service, allowing you to set and access Blob storage properties programmatically. Mithilfe von CloudBlobClient können Sie eine Instanz des CloudBlobClient-Objekts erstellen, was zum Erstellen von Containern erforderlich ist.Using the CloudBlobClient you can create an instance of the CloudBlobContainer object, which is necessary to create containers.

  • Erstellen Sie eine Instanz des CloudBlobContainer-Objekts, das den Container darstellt, auf den Sie zugreifen.Create an instance of the CloudBlobContainer object, which represents the container you are accessing. Container dienen dazu, Ihre Blobs zu strukturieren – genau wie Ordner, die Sie auf Ihrem Computer zum Strukturieren Ihrer Dateien verwenden.Use containers to organize your blobs like you use folders on your computer to organize your files.

    Wenn Sie über den Cloudblobcontainer (CloudBlobContainer) verfügen, können Sie eine Instanz des Objekts CloudBlockBlob erstellen, das auf das gewünschte Blob verweist, und beispielsweise einen Upload-, Download- oder Kopiervorgang ausführen.Once you have the CloudBlobContainer, you can create an instance of the CloudBlockBlob object that points to the specific blob you’re interested in, and perform an upload, download, copy, or other operation.

Wichtig

Die Containernamen müssen klein geschrieben werden.Container names must be lowercase. Weitere Informationen zu Containern finden Sie unter Naming and Referencing Containers, Blobs, and Metadata (Benennen von Containern, Blobs und Metadaten und Verweisen auf diese).For more information about containers, see Naming and Referencing Containers, Blobs, and Metadata.

Erstellen eines ContainersCreate a container

In diesem Abschnitt erstellen Sie eine Instanz der Objekte und einen neuen Container und legen dann Berechtigungen für den Container fest, damit die Blobs öffentlich sind und einfach mit einer URL auf sie zugegriffen werden kann.In this section, you create an instance of the objects, create a new container, and then set permissions on the container so the blobs are public and can be accessed with just a URL. Der Name des Containers lautet quickstartcontainer.The container is called quickstartcontainer.

In diesem Beispiel wird CreateIfNotExists verwendet, da bei jedem Ausführen des Beispiels ein neuer Container erstellt werden soll.This example uses CreateIfNotExists because we want to create a new container each time the sample is run. In einer Produktionsumgebung, in der Sie in der gesamten Anwendung den gleichen Container verwenden, empfiehlt es sich hingegen, CreateIfNotExists nur einmal aufzurufen.In a production environment, where you use the same container throughout an application, it's better practice to only call CreateIfNotExists once. Alternativ können Sie den Container im Voraus erstellen, damit er nicht im Code erstellt werden muss.Alternatively, you can create the container ahead of time so you don't need to create it in the code.

// Parse the connection string and create a blob client to interact with Blob storage
storageAccount = CloudStorageAccount.parse(storageConnectionString);
blobClient = storageAccount.createCloudBlobClient();
container = blobClient.getContainerReference("quickstartcontainer");

// Create the container if it does not exist with public access.
System.out.println("Creating container: " + container.getName());
container.createIfNotExists(BlobContainerPublicAccessType.CONTAINER, new BlobRequestOptions(), new OperationContext());

Hochladen von Blobs in den ContainerUpload blobs to the container

Um eine Datei in ein Blockblob hochzuladen, rufen Sie einen Verweis auf das Blob im Zielcontainer ab.To upload a file to a block blob, get a reference to the blob in the target container. Nachdem Sie den Blobverweis abgerufen haben, können Sie mithilfe von CloudBlockBlob.Upload Daten in das Blob hochladen.Once you have the blob reference, you can upload data to it by using CloudBlockBlob.Upload. Dieser Vorgang erstellt das Blob, sofern noch keines vorhanden ist, oder überschreibt das vorhandene Blob.This operation creates the blob if it doesn't already exist, or overwrites the blob if it already exists.

Der Beispielcode erstellt eine lokale Datei für den Upload und Download. Dabei wird die hochzuladende Datei als Quelle und der Name des Blob in Blob gespeichert.The sample code creates a local file to be used for the upload and download, storing the file to be uploaded as source and the name of the blob in blob. Im folgenden Beispiel wird die Datei in einen Container mit dem Namen quickstartcontainer hochgeladen.The following example uploads the file to your container called quickstartcontainer.

//Creating a sample file
sourceFile = File.createTempFile("sampleFile", ".txt");
System.out.println("Creating a sample file at: " + sourceFile.toString());
Writer output = new BufferedWriter(new FileWriter(sourceFile));
output.write("Hello Azure!");
output.close();

//Getting a blob reference
CloudBlockBlob blob = container.getBlockBlobReference(sourceFile.getName());

//Creating blob and uploading file to it
System.out.println("Uploading the sample file ");
blob.uploadFromFile(sourceFile.getAbsolutePath());

Es gibt mehrere upload-Methoden (unter anderem upload, uploadBlock, uploadFullBlob, uploadStandardBlobTier und uploadText), die Sie mit Blob Storage verwenden können.There are several upload methods including upload, uploadBlock, uploadFullBlob, uploadStandardBlobTier, and uploadText which you can use with Blob storage. Für eine Zeichenfolge können Sie beispielsweise anstelle der Upload-Methode die UploadText-Methode verwenden.For example, if you have a string, you can use the UploadText method rather than the Upload method.

Blockblobs können jede Art von Text oder Binärdateien darstellen.Block blobs can be any type of text or binary file. Seitenblobs werden in erster Linie für die VHD-Dateien verwendet, die IaaS-VMs zugrunde liegen.Page blobs are primarily used for the VHD files that back IaaS VMs. Anfügeblobs dienen zur Protokollierung und werden beispielsweise verwendet, wenn Sie etwas in eine Datei schreiben und ihr nach und nach weitere Informationen hinzufügen möchten.Use append blobs for logging, such as when you want to write to a file and then keep adding more information. Die meisten Objekte, die in Blob Storage gespeichert werden, sind allerdings Blockblobs.Most objects stored in Blob storage are block blobs.

Auflisten der Blobs in einem ContainerList the blobs in a container

Mit CloudBlobContainer.ListBlobs können Sie eine Liste von Dateien im Container abrufen.You can get a list of files in the container using CloudBlobContainer.ListBlobs. Der folgende Code ruft die Liste der Blobs ab und durchläuft sie, um die URIs der gefundenen Blobs anzuzeigen.The following code retrieves the list of blobs, then loops through them, showing the URIs of the blobs found. Sie können den URI aus dem Befehlsfenster kopieren und in einen Browser einfügen, um die Datei anzuzeigen.You can copy the URI from the command window and paste it into a browser to view the file.

//Listing contents of container
for (ListBlobItem blobItem : container.listBlobs()) {
    System.out.println("URI of blob is: " + blobItem.getUri());
}

Herunterladen von BlobsDownload blobs

Laden Sie mit CloudBlob.DownloadToFile Blobs auf den lokalen Datenträger herunter.Download blobs to your local disk using CloudBlob.DownloadToFile.

Der folgende Code lädt das im vorherigen Abschnitt hochgeladene Blob herunter und fügt dem Blobnamen das Suffix „_DOWNLOADED“ hinzu, damit auf dem lokalen Datenträger beide Dateien angezeigt werden.The following code downloads the blob uploaded in a previous section, adding a suffix of "_DOWNLOADED" to the blob name so you can see both files on local disk.

// Download blob. In most cases, you would have to retrieve the reference
// to cloudBlockBlob here. However, we created that reference earlier, and 
// haven't changed the blob we're interested in, so we can reuse it. 
// Here we are creating a new file to download to. Alternatively you can also pass in the path as a string into downloadToFile method: blob.downloadToFile("/path/to/new/file").
downloadedFile = new File(sourceFile.getParentFile(), "downloadedFile.txt");
blob.downloadToFile(downloadedFile.getAbsolutePath());

Bereinigen von RessourcenClean up resources

Wenn Sie die hochgeladenen Blobs nicht mehr benötigen, können Sie mit CloudBlobContainer.DeleteIfExists den gesamten Container löschen.If you no longer need the blobs that you have uploaded, you can delete the entire container using CloudBlobContainer.DeleteIfExists. Mit dieser Methode werden auch die Dateien im Container gelöscht.This method also deletes the files in the container.

try {
if(container != null)
    container.deleteIfExists();
} catch (StorageException ex) {
System.out.println(String.format("Service error. Http code: %d and error code: %s", ex.getHttpStatusCode(), ex.getErrorCode()));
}

System.out.println("Deleting the source, and downloaded files");

if(downloadedFile != null)
downloadedFile.deleteOnExit();
        
if(sourceFile != null)
sourceFile.deleteOnExit();

Nächste SchritteNext steps

In diesem Artikel haben Sie gelernt, wie Sie mit Java Dateien zwischen einem lokalen Datenträger und Azure Blob Storage übertragen.In this article, you learned how to transfer files between a local disk and Azure Blob storage using Java. Weitere Informationen zum Arbeiten mit Java finden Sie in unserem Quellcoderepository auf GitHub.To learn more about working with Java, continue to our GitHub source code repository.