Partilhar via


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.