Megosztás a következőn keresztül:


Azure Filest használó Java-alkalmazások fejlesztése

Ismerje meg az Azure Filest az adatok tárolására szolgáló Java-alkalmazások fejlesztésének alapjait. Hozzon létre egy konzolalkalmazást, és ismerje meg az alapvető műveleteket az Azure Files API-kkal:

  • Azure-fájlmegosztások létrehozása és törlése
  • Könyvtárak létrehozása és törlése
  • Fájlok és könyvtárak számbavétele egy Azure-fájlmegosztásban
  • Fájl feltöltése, letöltése és törlése

Tipp.

Az Azure Storage kódmintatár megtekintése

Letölthető és futtatható, könnyen használható teljes körű Azure Storage-kódmintákért tekintse meg az Azure Storage-minták listáját.

A következőre érvényes:

Fájlmegosztás típusa SMB NFS
Standard szintű fájlmegosztások (GPv2), LRS/ZRS Igen Nem
Standard szintű fájlmegosztások (GPv2), GRS/GZRS Igen Nem
Prémium fájlmegosztások (FileStorage), LRS/ZRS Igen Nem

Java-alkalmazás létrehozása

A minták létrehozásához szüksége lesz a Java Development Kitre (JDK) és a Java-hoz készült Azure Storage SDK-ra. Szüksége lesz egy Azure Storage-fiókra is.

Az alkalmazás beállítása az Azure Files használatára

Az Azure Files API-k használatához adja hozzá a következő kódot a Java-fájl elejéhez, ahonnan az Azure Filest el szeretné érni.

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

Azure Storage-kapcsolati sztring beállítása

Az Azure Files használatához csatlakoznia kell az Azure Storage-fiókjához. Konfiguráljon egy kapcsolati sztring, és használja a tárfiókhoz való csatlakozáshoz. Adjon meg egy statikus változót a kapcsolati sztring tárolásához.

Cserélje le <storage_account_name> és< storage_account_key> a tárfiók tényleges értékeire.

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

Azure-fájlmegosztás elérése

Az Azure Files eléréséhez hozzon létre egy ShareClient-objektumot . A ShareClientBuilder osztály használatával hozzon létre egy új ShareClient-objektumot.

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

Fájlmegosztás létrehozása

Az Azure Files összes fájlja és könyvtára egy megosztás nevű tárolóban van tárolva.

A ShareClient.create metódus kivételt okoz, ha a megosztás már létezik. Hozza létre a hívást egy try/catch blokkban, és kezelje a kivételt.

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

Fájlmegosztás törlése

Az alábbi mintakód töröl egy fájlmegosztást.

A ShareClient.delete metódus meghívásával törölhet egy megosztást.

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

Címtár létrehozása

A tárolás rendszerezése úgy, hogy a fájlokat alkönyvtárakba helyezi ahelyett, hogy mindegyik a gyökérkönyvtárban található volna.

Az alábbi kód létrehoz egy könyvtárat a ShareDirectoryClient.create meghívásával. A példametódus egy Boolean értéket ad vissza, amely jelzi, hogy sikeresen létrehozta-e a könyvtárat.

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

Könyvtár törlése

A címtár törlése egyszerű feladat. Nem törölhet olyan könyvtárat, amely továbbra is fájlokat vagy alkönyvtárakat tartalmaz.

A ShareDirectoryClient.delete metódus kivételt jelez, ha a könyvtár nem létezik vagy nem üres. Helyezze a törlésre vonatkozó hívást egy try/catch blokkba, és kezelje a kivételt.

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

Fájlok és könyvtárak számbavétele egy Azure-fájlmegosztásban

A ShareDirectoryClient.listFilesAndDirectories meghívásával lekérheti a fájlok és könyvtárak listáját. A metódus azoknak a ShareFileItem-objektumoknak a listáját adja vissza, amelyeken iterálhat. Az alábbi kód a dirName paraméter által megadott könyvtárban lévő fájlokat és könyvtárakat sorolja fel.

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

Fájl feltöltése

Megtudhatja, hogyan tölthet fel fájlokat a helyi tárolóból.

Az alábbi kód feltölt egy helyi fájlt az Azure Filesba a ShareFileClient.uploadFromFile metódus meghívásával. Az alábbi példametódus egy Boolean értéket ad vissza, amely jelzi, hogy sikeresen feltöltötte-e a megadott fájlt.

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

Fájl letöltése

Az egyik gyakoribb művelet a fájlok letöltése egy Azure-fájlmegosztásból.

Az alábbi példa letölti a megadott fájlt a destDir paraméterben megadott helyi könyvtárba. A példametódus egyedivé teszi a letöltött fájlnevet a dátum és az idő előerősítésével.

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

Fájl törlése

Egy másik gyakori Azure Files-művelet a fájltörlés.

Az alábbi kód törli a megadott fájlt. Először is, a példa létrehoz egy ShareDirectoryClientet a dirName paraméter alapján. Ezután a kód lekéri a ShareFileClientet a címtárügyfélről a fileName paraméter alapján. Végül a példametódus meghívja a ShareFileClient.delete fájlt a fájl törlésére.

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

Következő lépések

Ha szeretne többet megtudni más Azure Storage API-król, kövesse ezeket a hivatkozásokat.

Az elavult Java 8 SDK-kkal kapcsolatos kódmintákért lásd a Java 8-at használó kódmintákat.