Desarrollo de aplicaciones Java que usan Azure Files
Aprenda los conceptos básicos de desarrollar aplicaciones de Java que usen Azure Files para almacenar datos. Cree una aplicación de consola y aprenda las acciones básicas sobre el uso de las API de Azure Files:
- Crear y eliminar recursos compartidos de archivos de Azure
- Crear y eliminar directorios
- Enumerar los archivos y directorios de un recurso compartido de Azure File
- Cargar, descargar y eliminar un archivo
Sugerencia
Extraer del repositorio ejemplos de código de Azure Storage
Para encontrar ejemplos de código de Azure Storage de un extremo a otro y fáciles de usar que se pueden descargar y ejecutar, consulte nuestra lista de ejemplos de Azure Storage.
Se aplica a
Tipo de recurso compartido de archivos | SMB | NFS |
---|---|---|
Recursos compartidos de archivos Estándar (GPv2), LRS/ZRS | ||
Recursos compartidos de archivos Estándar (GPv2), GRS/GZRS | ||
Recursos compartidos de archivos Premium (FileStorage), LRS/ZRS |
Creación de una aplicación Java
Para compilar las muestras, se necesitará el Kit de desarrollo de Java (JDK) y el SDK de Azure Storage para Java. También necesitará una cuenta de Azure Storage.
Configuración de la aplicación para usar Azure Files
Para utilizar las API de Azure Files, agregue el siguiente código al principio del archivo Java desde el que desea acceder a Azure Files.
// Include the following imports to use Azure Files APIs
import com.azure.storage.file.share.*;
Configuración de una cadena de conexión de Almacenamiento de Azure
Para usar Azure Files, debe conectarse a su cuenta de almacenamiento de Azure. Configure una cadena de conexión y úsela para conectarse a su cuenta de almacenamiento. Defina una variable estática que contenga la cadena de conexión.
Reemplace <your_storage_account_name> y <your_storage_account_key> por los valores reales de la cuenta de almacenamiento.
// 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>";
Acceso a un recurso compartido de archivos de Azure
Para acceder a Azure Files, cree un objeto ShareClient. Use la clase ShareClientBuilder para crear un nuevo objeto ShareClient.
ShareClient shareClient = new ShareClientBuilder()
.connectionString(connectStr).shareName(shareName)
.buildClient();
Creación de un recurso compartido de archivos
Todos los archivos y directorios de Azure Files se almacenan en un contenedor denominado recurso compartido.
El método ShareClient.create produce una excepción si el recurso compartido ya existe. Coloque la llamada a create en un bloque try/catch
y controle la excepción.
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;
}
}
Eliminación de un recurso compartido de archivos
En el siguiente código de ejemplo se elimina un recurso compartido de archivos.
Elimine un recurso compartido llamando al método 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;
}
}
Creación de un directorio
Para organizar el almacenamiento, coloque los archivos en los subdirectorios, en lugar de mantenerlos todos en el directorio raíz.
En el código siguiente se crea un directorio llamando a ShareDirectoryClient.create. El método de ejemplo devuelve un valor Boolean
que indica si se el directorio creó correctamente.
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;
}
}
Eliminación de un directorio
Eliminar un directorio es una tarea sencilla. No se puede eliminar un directorio que todavía contenga archivos o subdirectorios.
El método ShareDirectoryClient.delete produce una excepción si el directorio no existe o no está vacío. Coloque la llamada a delete en un bloque try/catch
y controle la excepción.
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;
}
}
Enumerar los archivos y directorios de un recurso compartido de Azure File
Obtenga una lista de archivos y directorios llamando ShareDirectoryClient.listFilesAndDirectories. El método devuelve una lista de objetos ShareFileItem en los que puede efectuar la iteración. En el código siguiente se enumeran los archivos y directorios del directorio especificado por el parámetro 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;
}
}
Cargar un archivo
Obtenga información sobre cómo cargar un archivo desde el almacenamiento local.
El código siguiente carga un archivo local en Azure Files mediante una llamada al método ShareFileClient.uploadFromFile. El método de ejemplo siguiente devuelve un valor Boolean
que indica si el archivo especificado se cargó correctamente.
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;
}
}
Descarga de un archivo
Una de las operaciones más frecuentes es descargar archivos de un recurso compartido de archivos de Azure.
En el siguiente ejemplo se descarga el archivo especificado en el directorio local especificado en el parámetro destDir. El método de ejemplo hace que el nombre de archivo descargado sea único al anteponer la fecha y la hora.
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;
}
}
Eliminación de un archivo
Otra operación habitual en Azure Files es la eliminación de archivos.
En el código siguiente se elimina el archivo especificado. En primer lugar, el ejemplo crea un método ShareDirectoryClient basándose en el parámetro dirName. A continuación, el código obtiene un ShareFileClient desde el cliente de directorio, basado en el parámetro fileName. Por último, el método de ejemplo llama a ShareFileClient.delete para eliminar el archivo.
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;
}
}
Pasos siguientes
Si desea obtener más información acerca de otras API de almacenamiento de Azure, siga estos vínculos.
- Azure para desarrolladores de Java
- SDK de Azure para Java
- SDK de Azure para Android
- Referencia del SDK de la biblioteca cliente de recursos compartidos de archivos de Azure para Java
- API de REST de servicios de Azure Storage
- Blog del equipo de Azure Storage
- Transferencia de datos con la utilidad en línea de comandos AzCopy
- Solucionar problemas de Azure Files
Para ver ejemplos de código relacionados que usan SDK de la versión 8 de Java en desuso, consulte Ejemplos de código que usan la versión 8 de Java.