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 | ||
Standard szintű fájlmegosztások (GPv2), GRS/GZRS | ||
Prémium fájlmegosztások (FileStorage), LRS/ZRS |
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.
- Azure Java-fejlesztőknek
- Javához készült Azure SDK
- Azure SDK androidos
- A Java SDK-hoz készült Azure File Share ügyfélkódtár referenciája
- Az Azure Storage-szolgáltatások REST API-ja
- Az Azure Storage csapat blogja
- Adatátvitel az AzCopy parancssori segédprogrammal
- Azure-fájlok hibaelhárítása
Az elavult Java 8 SDK-kkal kapcsolatos kódmintákért lásd a Java 8-at használó kódmintákat.