Desenvolvimento para o Arquivos do Azure com Java

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

  • 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, baixar e excluir um arquivo

Dica

Confira o repositório de exemplos de código do Armazenamento do Azure

Para exemplos de código fácil de usar ponta a ponta do Armazenamento do Azure que você pode baixar e executar, consulte nossa lista de Exemplos de Armazenamento do Azure.

Aplica-se a

Tipo de compartilhamento de arquivos SMB NFS
Compartilhamentos de arquivos padrão (GPv2), LRS/ZRS Sim Não
Compartilhamentos de arquivos padrão (GPv2), GRS/GZRS Sim Não
Compartilhamento de arquivos premium (FileStorage), LRS/ZRS Sim Não

Criar um aplicativo Java

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

Configurar seu aplicativo para usar os Arquivos do Azure

Para usar as APIs de Arquivos do Azure, adicione o código a seguir à parte superior do arquivo Java por meio do qual 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 o Arquivos do Azure, será necessário 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 conter 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 arquivo do Azure

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

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

Criar um compartilhamento de arquivo

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

O método ShareClient.create gera uma exceção se o compartilhamento já existe. Coloque a chamada de criação em um bloco try/catch e trate 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;
    }
}

Excluir um compartilhamento de arquivos

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

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 em subdiretórios em vez de manter 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 valor Boolean 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;
    }
}

Excluir 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 gera uma exceção se o diretório não existe ou não está vazio. Coloque a chamada de exclusão em um bloco try/catch e trate 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 os 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;
    }
}

Fazer upload de um arquivo

Saiba como carregar um arquivo 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 valor Boolean 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;
    }
}

Baixar um arquivo

Uma das operações mais frequentes é baixar arquivos no armazenamento de arquivo 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 de arquivo baixado exclusivo, acrescentando a data e hora no início do nome.

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

Excluir um arquivo

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

O código a seguir exclui o arquivo 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. Por fim, 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óximas etapas

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

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