Ontwikkelen voor Azure Files met Java

Leer de basisbeginselen van het ontwikkelen van Java-toepassingen die gebruikmaken van Azure Files om gegevens op te slaan. Maak een consoletoepassing en leer basisacties met behulp van Azure Files API's:

  • Azure-bestandsshares maken en verwijderen
  • Mappen maken en verwijderen
  • Bestanden en mappen in een Azure-bestandsshare opsommen
  • Een bestand uploaden, downloaden en verwijderen

Tip

Bekijk de opslagplaats met codevoorbeelden van Azure Storage

Raadpleeg onze lijst met Azure Storage-voorbeelden voor eenvoudig te gebruiken end-to-end Azure Storage-codevoorbeelden die u kunt downloaden en uitvoeren.

Van toepassing op

Bestands sharetype SMB NFS
Standaardbestandsshares (GPv2), LRS/ZRS Ja Nee
Standaardbestandsshares (GPv2), GRS/GZRS Ja Nee
Premium bestandsshares (FileStorage), LRS/ZRS Ja No

Een Java-toepassing maken

Als u de voorbeelden wilt bouwen, hebt u de Java Development Kit (JDK) en de Azure Storage SDK voor Java nodig. U moet ook een Azure-opslagaccount hebben gemaakt.

Uw toepassing instellen voor het gebruik van Azure Files

Als u de Azure Files API's wilt gebruiken, voegt u de volgende code toe aan het begin van het Java-bestand van waaruit u toegang wilt krijgen tot Azure Files.

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

Een Azure Storage-connection string instellen

Als u Azure Files wilt gebruiken, moet u verbinding maken met uw Azure-opslagaccount. Configureer een connection string en gebruik deze om verbinding te maken met uw opslagaccount. Definieer een statische variabele voor het connection string.

Vervang <storage_account_name> en <storage_account_key> door de werkelijke waarden voor uw opslagaccount.

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

Toegang tot een Azure-bestandsshare

Maak een ShareClient-object om toegang te krijgen tot Azure Files. Gebruik de klasse ShareClientBuilder om een nieuw ShareClient-object te bouwen.

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

Een bestandsshare maken

Alle bestanden en mappen in Azure Files worden opgeslagen in een container die een share wordt genoemd.

De methode ShareClient.create genereert een uitzondering als de share al bestaat. Plaats de aanroep die moet worden gemaakt in een try/catch blok en verwerk de uitzondering.

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

Een bestandsshare verwijderen

Met de volgende voorbeeldcode wordt een bestandsshare verwijderd.

Verwijder een share door de methode ShareClient.delete aan te roepen.

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

Een map maken

Organiseer opslag door bestanden in submappen te plaatsen in plaats van ze allemaal in de hoofdmap te hebben.

Met de volgende code wordt een map gemaakt door ShareDirectoryClient.create aan te roepen. De voorbeeldmethode retourneert een Boolean waarde die aangeeft of de map is gemaakt.

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

Een map verwijderen

Het verwijderen van een map is een eenvoudige taak. U kunt een map die nog bestanden of submappen bevat, niet verwijderen.

De methode ShareDirectoryClient.delete genereert een uitzondering als de map niet bestaat of niet leeg is. Plaats de aanroep om te verwijderen in een try/catch blok en verwerk de uitzondering.

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

Bestanden en mappen in een Azure-bestandsshare opsommen

Haal een lijst met bestanden en mappen op door ShareDirectoryClient.listFilesAndDirectories aan te roepen. De methode retourneert een lijst met ShareFileItem-objecten waarop u kunt herhalen. De volgende code bevat bestanden en mappen in de map die is opgegeven door de parameter 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;
    }
}

Een bestand uploaden

Meer informatie over het uploaden van een bestand vanuit lokale opslag.

Met de volgende code wordt een lokaal bestand geüpload naar Azure Files door de methode ShareFileClient.uploadFromFile aan te roepen. De volgende voorbeeldmethode retourneert een Boolean waarde die aangeeft of het opgegeven bestand is geüpload.

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

Een bestand downloaden

Een van de meest voorkomende bewerkingen is het downloaden van bestanden van een Azure-bestandsshare.

In het volgende voorbeeld wordt het opgegeven bestand gedownload naar de lokale map die is opgegeven in de parameter destDir . De voorbeeldmethode maakt de gedownloade bestandsnaam uniek door de datum en tijd vooraf te laten gaan.

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

Een bestand verwijderen

Een andere veelvoorkomende Azure Files bewerking is het verwijderen van bestanden.

Met de volgende code wordt het opgegeven bestand verwijderd. In het voorbeeld wordt eerst een ShareDirectoryClient gemaakt op basis van de parameter dirName . Vervolgens haalt de code een ShareFileClient op uit de mapclient, op basis van de parameter fileName . Ten slotte roept de voorbeeldmethode ShareFileClient.delete aan om het bestand te verwijderen.

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

Volgende stappen

Als u meer wilt weten over andere Azure Storage-API's, volgt u deze koppelingen.

Zie Codevoorbeelden met Java versie 8 voor gerelateerde codevoorbeelden met behulp van afgeschafte Java versie 8 SDK's.