Entwickeln für Azure Files mit Java

Lernen Sie die Grundlagen der Entwicklung von Java-Anwendungen kennen, die Azure Files zum Speichern von Daten verwenden. Erstellen einer Konsolenanwendung und Kennenlernen der grundlegenden Aktionen mithilfe von Azure Files-APIs:

  • Erstellen und Löschen von Azure-Dateifreigaben
  • Erstellen und Löschen von Verzeichnissen
  • Auflisten von Dateien und Verzeichnissen in einer Azure-Dateifreigabe
  • Hochladen, Herunterladen und Löschen einer Datei

Tipp

Repository mit Azure Storage-Codebeispielen

In unserer Liste mit Azure Storage-Beispielen finden Sie benutzerfreundliche, umfassende Azure Storage-Codebeispiele, die Sie herunterladen und ausführen können.

Gilt für:

Dateifreigabetyp SMB NFS
Standard-Dateifreigaben (GPv2), LRS/ZRS Ja Nein
Standard-Dateifreigaben (GPv2), GRS/GZRS Ja Nein
Premium-Dateifreigaben (FileStorage), LRS/ZRS Ja Nein

Erstellen einer Java-Anwendung

Zum Erstellen der Beispiele benötigen Sie das Java Development Kit (JDK) und das Azure Storage SDK für Java. Sie sollten auch ein Azure-Speicherkonto erstellt haben.

Einrichten der Anwendung für die Verwendung von Azure Files

Um die Azure Files-APIs zu verwenden, fügen Sie folgenden Code am Anfang der Java-Datei dort ein, wo der Zugriff auf Azure Files erfolgen soll.

// Include the following imports to use Azure Files APIs
import com.azure.storage.file.share.*;

Einrichten einer Azure-Speicherverbindungszeichenfolge

Zum Verwenden von Azure Files müssen Sie eine Verbindung mit Ihrem Azure Storage-Konto herstellen. Konfigurieren Sie eine Verbindungszeichenfolge, und verwenden Sie diese zum Herstellen der Verbindung mit Ihrem Speicherkonto. Definieren Sie eine statische Variable, die die Verbindungszeichenfolge enthalten soll.

Ersetzen Sie <storage_account_name> und <storage_account_key> durch die tatsächlichen Werte für Ihr Speicherkonto.

// Define the connection-string.
// Replace the values, including <>, with
// the values from your storage account.
public static final String connectStr = 
   "DefaultEndpointsProtocol=https;" +
   "AccountName=<storage_account_name>;" +
   "AccountKey=<storage_account_key>";

Zugreifen auf eine Azure-Dateifreigabe

Um auf Azure Files zuzugreifen, erstellen Sie ein ShareClient-Objekt. Erstellen Sie mithilfe der ShareClientBuilder-Klasse ein neues ShareClient-Objekt.

ShareClient shareClient = new ShareClientBuilder()
    .connectionString(connectStr).shareName(shareName)
    .buildClient();

Erstellen einer Dateifreigabe

Alle Dateien und Verzeichnisse in Azure Files werden in einem Container gespeichert, der als „Freigabe“ bezeichnet wird.

Die ShareClient.create-Methode löst eine Ausnahme aus, wenn die Freigabe bereits vorhanden ist. Fügen Sie den Aufruf von create in einen try/catch-Block ein, und behandeln Sie die Ausnahme.

public static Boolean createFileShare(String connectStr, String shareName)
{
    try
    {
        ShareClient shareClient = new ShareClientBuilder()
            .connectionString(connectStr).shareName(shareName)
            .buildClient();

        shareClient.create();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("createFileShare exception: " + e.getMessage());
        return false;
    }
}

Löschen einer Dateifreigabe

Mit dem folgenden Beispielcode wird eine Dateifreigabe gelöscht.

Sie löschen eine Freigabe, indem Sie die ShareClient.delete-Methode aufrufen.

public static Boolean deleteFileShare(String connectStr, String shareName)
{
    try
    {
        ShareClient shareClient = new ShareClientBuilder()
            .connectionString(connectStr).shareName(shareName)
            .buildClient();

        shareClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteFileShare exception: " + e.getMessage());
        return false;
    }
}

Erstellen eines Verzeichnisses

Organisieren Sie den Speicher, indem Sie Dateien in Unterverzeichnissen ablegen, anstatt alle Dateien im Stammverzeichnis zu speichern.

Der folgende Code erstellt ein Verzeichnis durch Aufrufen von ShareDirectoryClient.create. Die Beispielmethode gibt einen Boolean-Wert zurück, der angibt, ob das Verzeichnis erfolgreich erstellt wurde.

public static Boolean createDirectory(String connectStr, String shareName,
                                        String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.create();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("createDirectory exception: " + e.getMessage());
        return false;
    }
}

Löschen eines Verzeichnisses

Das Löschen eines Verzeichnisses ist einfach. Sie können kein Verzeichnis löschen, das noch Dateien oder Unterverzeichnisse enthält.

Die ShareDirectoryClient.delete-Methode löst eine Ausnahme aus, wenn das Verzeichnis nicht vorhanden oder nicht leer ist. Fügen Sie den Aufruf von delete in einen try/catch-Block ein, und behandeln Sie die Ausnahme.

public static Boolean deleteDirectory(String connectStr, String shareName,
                                        String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteDirectory exception: " + e.getMessage());
        return false;
    }
}

Auflisten von Dateien und Verzeichnissen in einer Azure-Dateifreigabe

Sie rufen eine Liste von Dateien und Verzeichnissen ab, indem Sie ShareDirectoryClient.listFilesAndDirectories aufrufen. Die Methode gibt eine Liste von ShareFileItem-Objekten zurück, die Sie durchlaufen können. Der folgende Code listet die Dateien und Verzeichnisse in dem durch den dirName-Parameter angegebenen Verzeichnis auf.

public static Boolean enumerateFilesAndDirs(String connectStr, String shareName,
                                                String dirName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        dirClient.listFilesAndDirectories().forEach(
            fileRef -> System.out.printf("Resource: %s\t Directory? %b\n",
            fileRef.getName(), fileRef.isDirectory())
        );

        return true;
    }
    catch (Exception e)
    {
        System.out.println("enumerateFilesAndDirs exception: " + e.getMessage());
        return false;
    }
}

Hochladen einer Datei

Erfahren Sie, wie Sie eine Datei aus dem lokalen Speicher hochladen.

Mit dem folgenden Code wird eine lokale Datei in Azure Files hochgeladen, indem die ShareFileClient.uploadFromFile-Methode aufgerufen wird. Die folgende Beispielmethode gibt einen Boolean-Wert zurück, der angibt, ob die angegebene Datei erfolgreich hochgeladen wurde.

public static Boolean uploadFile(String connectStr, String shareName,
                                    String dirName, String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);
        fileClient.create(1024);
        fileClient.uploadFromFile(fileName);
        return true;
    }
    catch (Exception e)
    {
        System.out.println("uploadFile exception: " + e.getMessage());
        return false;
    }
}

Herunterladen einer Datei

Ein Vorgang, den Sie häufiger durchführen werden, ist das Herunterladen von Dateien von einer Azure-Dateifreigabe.

Im folgenden Beispiel wird die angegebene Datei in das lokale Verzeichnis heruntergeladen, das im Parameter destDir angegeben ist. Die Beispielmethode macht den Namen der heruntergeladenen Datei eindeutig, indem ihm das Datum und die Uhrzeit vorangestellt werden.

public static Boolean downloadFile(String connectStr, String shareName,
                                    String dirName, String destDir,
                                        String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);

        // Create a unique file name
        String date = new java.text.SimpleDateFormat("yyyyMMdd-HHmmss").format(new java.util.Date());
        String destPath = destDir + "/"+ date + "_" + fileName;

        fileClient.downloadToFile(destPath);
        return true;
    }
    catch (Exception e)
    {
        System.out.println("downloadFile exception: " + e.getMessage());
        return false;
    }
}

Löschen von Dateien

Ein weiterer häufiger Azure Files-Vorgang ist das Löschen von Dateien.

Der folgende Code löscht die angegebene Datei. Zunächst wird im Beispiel ein ShareDirectoryClient erstellt, der auf dem dirName-Parameter basiert. Anschließend ruft der Code basierend auf dem Parameter fileName einen ShareFileClient vom Verzeichnisclient ab. Zum Schluss ruft die Beispielmethode ShareFileClient.delete auf, um die Datei zu löschen.

public static Boolean deleteFile(String connectStr, String shareName,
                                    String dirName, String fileName)
{
    try
    {
        ShareDirectoryClient dirClient = new ShareFileClientBuilder()
             .connectionString(connectStr).shareName(shareName)
             .resourcePath(dirName)
             .buildDirectoryClient();

        ShareFileClient fileClient = dirClient.getFileClient(fileName);
        fileClient.delete();
        return true;
    }
    catch (Exception e)
    {
        System.out.println("deleteFile exception: " + e.getMessage());
        return false;
    }
}

Nächste Schritte

Folgen Sie diesen Links, wenn Sie mehr über andere Azure-Speicher-APIs erfahren möchten.

Verwandte Codebeispiele, in denen veraltete Java Version 8 SDKs verwendet werden, finden Sie unter Codebeispiele mit der Java Version 8.