Sviluppare per File di Azure con Java

Informazioni di base sullo sviluppo di applicazioni Java che usano File di Azure per archiviare i dati. Creare un'applicazione console e apprendere le azioni di base usando le API di File di Azure:

  • Creare ed eliminare condivisioni file di Azure
  • Creare ed eliminare directory
  • Enumerare file e directory in una condivisione file di Azure
  • Caricare, scaricare ed eliminare un file

Suggerimento

Estrarre il repository degli esempi di codice di Archiviazione di Azure

Per esempi di codice end-to-end facile da usare che è possibile scaricare ed eseguire, vedere l'elenco di esempi di Archiviazione di Azure.

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file Standard (GPv2), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Sì No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona Sì No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Sì No

Creare un'applicazione Java

Per compilare gli esempi, è necessario Java Development Kit (JDK) e Azure Storage SDK per Java. È inoltre necessario aver creato un account di archiviazione di Azure.

Configurare l'applicazione per usare File di Azure

Per usare le API File di Azure, aggiungere il codice seguente all'inizio del file Java da cui si intende accedere a File di Azure.

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

Impostare una stringa di connessione di archiviazione di Azure

Per usare File di Azure, è necessario connettersi all'account di archiviazione di Azure. Configurare una stringa di connessione e usarla per connettersi all'account di archiviazione. Definire una variabile statica per contenere la stringa di connessione.

Sostituire <storage_account_name e storage_account_key> con i valori effettivi per l'account di archiviazione.><

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

Accedere a una condivisione file di Azure

Per accedere a File di Azure, creare un oggetto ShareClient. Usare la classe ShareClientBuilder per compilare un nuovo oggetto ShareClient .

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

Creare una condivisione file

Tutti i file e le directory in File di Azure vengono archiviati in un contenitore denominato condivisione.

Il metodo ShareClient.create genera un'eccezione se la condivisione esiste già. Inserire la chiamata per creare in un try/catch blocco e gestire l'eccezione.

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

Eliminare una condivisione file

Il codice di esempio seguente elimina una condivisione file.

Eliminare una condivisione chiamando il metodo 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;
    }
}

Creare una directory

Organizzare l'archiviazione inserendo i file all'interno di sottodirectory anziché avere tutti nella directory radice.

Il codice seguente crea una directory chiamando ShareDirectoryClient.create. Il metodo di esempio restituisce un Boolean valore che indica se è stata creata correttamente la directory.

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

Eliminare una directory

L'eliminazione di una directory è un'attività semplice. Non è possibile eliminare una directory che contiene ancora file o sottodirectory.

Il metodo ShareDirectoryClient.delete genera un'eccezione se la directory non esiste o non è vuota. Inserire la chiamata da eliminare in un try/catch blocco e gestire l'eccezione.

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

Enumerare file e directory in una condivisione file di Azure

Ottenere un elenco di file e directory chiamando ShareDirectoryClient.listFilesAndDirectories. Il metodo restituisce un elenco di oggetti ShareFileItem in cui è possibile eseguire l'iterazione. Il codice seguente elenca file e directory all'interno della directory specificata dal parametro 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;
    }
}

Caricare un file

Informazioni su come caricare un file dall'archiviazione locale.

Il codice seguente carica un file locale in File di Azure chiamando il metodo ShareFileClient.uploadFromFile. Il metodo di esempio seguente restituisce un Boolean valore che indica se è stato caricato correttamente il file specificato.

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

Scaricare un file

Una delle operazioni più frequenti consiste nel scaricare i file da una condivisione file di Azure.

Nell'esempio seguente viene scaricato il file specificato nella directory locale specificata nel parametro destDir . Il metodo di esempio rende univoco il nome file scaricato in attesa della data e dell'ora.

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

Eliminare un file

Un'altra operazione comunemente eseguita in File di Azure è l'eliminazione dei file.

Il codice seguente elimina il file specificato. In primo luogo, l'esempio crea un oggetto ShareDirectoryClient basato sul parametro dirName . Il codice ottiene quindi un oggetto ShareFileClient dal client di directory, in base al parametro fileName . Infine, il metodo di esempio chiama ShareFileClient.delete per eliminare il file.

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

Passaggi successivi

Per ulteriori informazioni su altre API di archiviazione di Azure, seguire i collegamenti seguenti.

Per esempi di codice correlati che usano SDK Java versione 8 deprecati, vedere Esempi di codice con Java versione 8.