Développer pour Azure Files avec Java

Découvrez les bases du développement d’applications Java qui utilisent Azure Files pour stocker des données. Créez une application console et découvrez les actions de base à l’aide des API Azure Files :

  • Créer et supprimer des partages de fichiers Azure
  • Créer et supprimer des répertoires
  • Énumérer des fichiers et répertoires dans un partage de fichiers Azure
  • Charger, télécharger et supprimer un fichier

Conseil

Consultez le référentiel d’exemples de code de Stockage Azure

Pour des exemples de code Stockage Azure de bout en bout faciles à utiliser que vous pouvez télécharger et exécuter, consultez notre liste Exemples Stockage Azure.

S’applique à

Type de partage de fichiers SMB NFS
Partages de fichiers Standard (GPv2), LRS/ZRS Oui Non
Partages de fichiers Standard (GPv2), GRS/GZRS Oui Non
Partages de fichiers Premium (FileStorage), LRS/ZRS Oui Non

Création d’une application Java

Pour générer les exemples, vous avez besoin du SDK Java et du SDK Stockage Azure pour Java. Vous devez également avoir préalablement créé un compte de stockage Azure.

Configurer votre application pour utiliser Azure Files

Pour utiliser les API Azure Files, ajoutez le code suivant au début du fichier Java depuis lequel vous voulez accéder à Azure Files.

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

Configuration d’une chaîne de connexion au stockage Azure

Pour utiliser Azure Files, vous devez vous connecter à votre compte de stockage Azure. Configurez une chaîne de connexion et utilisez-la pour vous connecter à votre compte de stockage. Définissez une variable statique pour contenir la chaîne de connexion.

Remplacez <storage_account_name> (nom de votre compte de stockage) et <storage_account_key> (clé de votre compte de stockage) par les valeurs réelles de votre compte de stockage.

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

Accéder à un partage de fichiers Azure

Pour accéder à Azure Files, créez un objet ShareClient. Utilisez la classe ShareClientBuilder pour générer un nouvel objet ShareClient.

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

Créer un partage de fichier

Tous les fichiers et répertoires dans Azure Files sont stockés dans un conteneur qu’on appelle un partage.

La méthode ShareClient.create lève une exception si le partage existe déjà. Placez l’appel à create dans un bloc try/catch et gérez l’exception.

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

Supprimer un partage de fichiers

L’exemple de code suivant supprime un partage de fichiers.

Supprimez un partage en appelant la méthode 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;
    }
}

Créer un répertoire

Organisez le stockage en plaçant des fichiers dans des sous-répertoires, plutôt que de tous les mettre dans le répertoire racine.

Le code suivant crée un répertoire en appelant ShareDirectoryClient.create. L’exemple de méthode retourne une valeur Boolean indiquant si le répertoire a bien été créé.

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

Supprimer un répertoire

La suppression d’un répertoire est une tâche simple. Vous ne pouvez pas supprimer un répertoire qui contient toujours des fichiers ou des sous-répertoires.

La méthode ShareDirectoryClient.delete lève une exception si le répertoire n’existe pas ou s’il n’est pas vide. Placez l’appel à delete dans un bloc try/catch et gérez l’exception.

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

Énumérer des fichiers et répertoires dans un partage de fichiers Azure

Obtenez la liste des fichiers et répertoires en appelant ShareDirectoryClient.listFilesAndDirectories. La méthode retourne une liste d’objets ShareFileItem sur laquelle vous pouvez effectuer une itération. Le code suivant répertorie les fichiers et les répertoires dans le répertoire spécifié par le paramètre 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;
    }
}

Charger un fichier

Découvrez comment charger un fichier à partir du stockage local.

Le code suivant charge un fichier local vers Azure Files en appelant la méthode ShareFileClient.uploadFromFile. L’exemple de méthode suivant retourne une valeur Boolean indiquant si le fichier spécifié a bien été chargé.

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

Téléchargement d’un fichier

Le téléchargement de fichiers à partir d’un partage de fichiers Azure est l’une des opérations les plus fréquentes.

L’exemple suivant télécharge le fichier spécifié dans le répertoire local spécifié dans le paramètre destDir. L’exemple de méthode rend le nom de fichier téléchargé unique en ajoutant la date et l’heure au début.

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

Supprimer un fichier

La suppression de fichiers est également une opération courante dans Azure Files.

Le code suivant supprime le fichier spécifié. Tout d’abord, l’exemple crée un ShareDirectoryClient en fonction du paramètre dirName. Ensuite, le code obtient un ShareFileClient à partir du client de répertoire, en fonction du paramètre fileName. Enfin, l’exemple de méthode appelle ShareFileClient.delete pour supprimer le fichier.

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

Étapes suivantes

Pour en savoir plus sur les autres API de stockage Azure, suivez ces liens.

Pour obtenir des exemples de code associés utilisant des Kits de développement logiciel (SDK) Java version 8 déconseillés, consultez les Exemples de code utilisant Java version 8.