Desenvolver aplicativos Java que usam Arquivos do Azure

Aprenda as noções básicas de desenvolvimento de aplicativos Java que usam Arquivos do Azure para armazenar dados. Crie um aplicativo de console e aprenda ações básicas usando as APIs do Azure Files:

  • Criar e excluir compartilhamentos de arquivos do Azure
  • Criar e excluir diretórios
  • Enumerar arquivos e diretórios em um compartilhamento de arquivos do Azure
  • Carregar, transferir e eliminar um ficheiro

Gorjeta

Veja o repositório de amostras de código do Armazenamento do Azure

Para obter exemplos de código de Armazenamento do Azure ponto a ponto fáceis de utilizar que pode transferir e executar, veja a nossa lista de Exemplos de Armazenamento do Azure.

Aplica-se a

Tipo de partilhas de ficheiros SMB NFS
Partilhas de ficheiros Standard (GPv2), LRS/ZRS Yes No
Partilhas de ficheiros Standard (GPv2), GRS/GZRS Yes No
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS Yes No

Criar uma aplicação Java

Para criar os exemplos, você precisará do Java Development Kit (JDK) e do SDK de Armazenamento do Azure para Java. Você também precisará de uma conta de armazenamento do Azure.

Configurar seu aplicativo para usar o Azure Files

Para usar as APIs de Arquivos do Azure, adicione o código a seguir à parte superior do arquivo Java de onde você pretende acessar os Arquivos do Azure.

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

Configurar uma cadeia de conexão de armazenamento do Azure

Para usar os Arquivos do Azure, você precisa se conectar à sua conta de armazenamento do Azure. Configure uma cadeia de conexão e use-a para se conectar à sua conta de armazenamento. Defina uma variável estática para manter a cadeia de conexão.

Substitua <storage_account_name> e< storage_account_key> pelos valores reais da sua conta de armazenamento.

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

Acessar um compartilhamento de arquivos do Azure

Para acessar os Arquivos do Azure, crie um objeto ShareClient . Use a classe ShareClientBuilder para criar um novo objeto ShareClient .

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

Criar uma partilha de ficheiros

Todos os arquivos e diretórios nos Arquivos do Azure são armazenados em um contêiner chamado compartilhamento.

O método ShareClient.create lança uma exceção se o compartilhamento já existir. Coloque a chamada para criar em um try/catch bloco e manipule a exceção.

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

Eliminar partilhas de ficheiros

O código de exemplo a seguir exclui um compartilhamento de arquivos.

Exclua um compartilhamento chamando o 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;
    }
}

Criar um diretório

Organize o armazenamento colocando arquivos dentro de subdiretórios em vez de ter todos eles no diretório raiz.

O código a seguir cria um diretório chamando ShareDirectoryClient.create. O método de exemplo retorna um Boolean valor que indica se ele criou com êxito o diretório.

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

Eliminar um diretório

Excluir um diretório é uma tarefa simples. Não é possível excluir um diretório que ainda contenha arquivos ou subdiretórios.

O método ShareDirectoryClient.delete lança uma exceção se o diretório não existir ou não estiver vazio. Coloque a chamada para excluir em um try/catch bloco e manipule a exceção.

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 arquivos e diretórios em um compartilhamento de arquivos do Azure

Obtenha uma lista de arquivos e diretórios chamando ShareDirectoryClient.listFilesAndDirectories. O método retorna uma lista de objetos ShareFileItem nos quais você pode iterar. O código a seguir lista arquivos e diretórios dentro do diretório especificado pelo 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;
    }
}

Carregar um ficheiro

Saiba como carregar um ficheiro a partir do armazenamento local.

O código a seguir carrega um arquivo local nos Arquivos do Azure chamando o método ShareFileClient.uploadFromFile. O método de exemplo a seguir retorna um Boolean valor que indica se ele carregou com êxito o arquivo especificado.

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

Transferir um ficheiro

Uma das operações mais frequentes é baixar arquivos de um compartilhamento de arquivos do Azure.

O exemplo a seguir baixa o arquivo especificado para o diretório local especificado no parâmetro destDir . O método de exemplo torna o nome do arquivo baixado exclusivo, antecipando a data e a 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;
    }
}

Eliminar um ficheiro

Outra operação comum dos Arquivos do Azure é a exclusão de arquivos.

O código a seguir exclui o arquivo especificado especificado. Primeiro, o exemplo cria um ShareDirectoryClient com base no parâmetro dirName . Em seguida, o código obtém um ShareFileClient do cliente de diretório, com base no parâmetro fileName . Finalmente, o método de exemplo chama ShareFileClient.delete para excluir o arquivo.

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

Próximos passos

Se quiser saber mais sobre outras APIs de armazenamento do Azure, siga estes links.

Para exemplos de código relacionados usando SDKs Java versão 8 preteridos, consulte Exemplos de código usando Java versão 8.