Develop for Azure Files with Java (Tworzenie oprogramowania dla usługi Azure Files przy użyciu języka Java)

Poznaj podstawy tworzenia aplikacji Java, które używają Azure Files do przechowywania danych. Utwórz aplikację konsolową i poznaj podstawowe akcje przy użyciu interfejsów API Azure Files:

  • Tworzenie i usuwanie udziałów plików platformy Azure
  • Tworzenie i usuwanie katalogów
  • Wyliczanie plików i katalogów w udziale plików platformy Azure
  • Przekazywanie, pobieranie i usuwanie pliku

Porada

Zapoznaj się z repozytorium przykładów kodu usługi Azure Storage

Nasza lista przykładów usługi Azure Storage zawiera łatwe w użyciu kompleksowe przykłady kodu usługi Azure Storage, które można pobierać i uruchamiać.

Dotyczy

Typ udziału plików SMB NFS
Udziały plików w warstwie Standardowa (GPv2), LRS/ZRS Tak Nie
Udziały plików w warstwie Standardowa (GPv2), GRS/GZRS Tak Nie
Udziały plików w warstwie Premium (FileStorage), LRS/ZRS Tak Nie

Tworzenie aplikacji Java

Aby skompilować przykłady, będziesz potrzebować zestawu Java Development Kit (JDK) i zestawu SDK usługi Azure Storage dla języka Java. Należy również utworzyć konto usługi Azure Storage.

Konfigurowanie aplikacji do używania Azure Files

Aby użyć interfejsów API Azure Files, dodaj następujący kod w górnej części pliku Java, z którego zamierzasz uzyskać dostęp do Azure Files.

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

Konfigurowanie usługi Azure Storage parametry połączenia

Aby użyć Azure Files, musisz nawiązać połączenie z kontem usługi Azure Storage. Skonfiguruj parametry połączenia i użyj jej do nawiązania połączenia z kontem magazynu. Zdefiniuj zmienną statyczną do przechowywania parametry połączenia.

Zastąp <storage_account_name> i <storage_account_key> wartościami rzeczywistymi dla konta magazynu.

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

Uzyskiwanie dostępu do udziału plików platformy Azure

Aby uzyskać dostęp do Azure Files, utwórz obiekt ShareClient. Użyj klasy ShareClientBuilder , aby utworzyć nowy obiekt ShareClient .

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

Tworzenie udziału plików

Wszystkie pliki i katalogi w Azure Files są przechowywane w kontenerze nazywanym udziałem.

Metoda ShareClient.create zgłasza wyjątek, jeśli udział już istnieje. Umieść wywołanie, aby utworzyć w try/catch bloku i obsłuż wyjątek.

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

Usuwanie udziału plików

Poniższy przykładowy kod usuwa udział plików.

Usuń udział, wywołując metodę ShareClient.delete .

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

Tworzenie katalogu

Organizuj magazyn, umieszczając pliki wewnątrz podkatalogów zamiast wszystkich z nich w katalogu głównym.

Poniższy kod tworzy katalog, wywołując element ShareDirectoryClient.create. Przykładowa metoda zwraca wartość wskazującą Boolean , czy katalog został pomyślnie utworzony.

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

Usuwanie katalogu

Usuwanie katalogu jest prostym zadaniem. Nie można usunąć katalogu, który nadal zawiera pliki lub podkatalogi.

Metoda ShareDirectoryClient.delete zgłasza wyjątek, jeśli katalog nie istnieje lub nie jest pusty. Umieść wywołanie, aby usunąć w try/catch bloku i obsłuż wyjątek.

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

Wyliczanie plików i katalogów w udziale plików platformy Azure

Pobierz listę plików i katalogów, wywołując element ShareDirectoryClient.listFilesAndDirectories. Metoda zwraca listę obiektów ShareFileItem , na których można iterować. Poniższy kod zawiera listę plików i katalogów w katalogu określonym przez parametr dirName .

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

Przekazywanie pliku

Dowiedz się, jak przekazać plik z magazynu lokalnego.

Poniższy kod przekazuje plik lokalny do Azure Files przez wywołanie metody ShareFileClient.uploadFromFileFile. Poniższa przykładowa metoda zwraca wartość wskazującą Boolean , czy pomyślnie przekazano określony plik.

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

Pobieranie pliku

Jedną z częstszych operacji jest pobranie plików z udziału plików platformy Azure.

Poniższy przykład pobiera określony plik do katalogu lokalnego określonego w parametrze destDir . Przykładowa metoda sprawia, że pobrana nazwa pliku jest unikatowa, poprzedzając datę i godzinę.

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

Usuwanie pliku

Inną typową operacją Azure Files jest usunięcie pliku.

Poniższy kod usuwa określony plik. Najpierw przykład tworzy element ShareDirectoryClient na podstawie parametru dirName . Następnie kod pobiera element ShareFileClient z klienta katalogu na podstawie parametru fileName . Na koniec przykładowa metoda wywołuje metodę ShareFileClient.delete , aby usunąć plik.

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

Następne kroki

Jeśli chcesz dowiedzieć się więcej o innych interfejsach API usługi Azure Storage, skorzystaj z tych linków.

Aby uzyskać powiązane przykłady kodu korzystające z przestarzałych zestawów SDK języka Java w wersji 8, zobacz Przykłady kodu korzystające z języka Java w wersji 8.