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 | ||
Partilhas de ficheiros Standard (GPv2), GRS/GZRS | ||
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS |
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.
- Azure for Java developers (Azure para programadores Java)
- SDK do Azure para Java
- SDK do Azure para Android
- Biblioteca de cliente do Azure File Share para Referência do SDK Java
- API REST dos Serviços do Armazenamento do Azure
- Azure Storage Team Blog (Blogue da Equipa do Armazenamento do Azure)
- Transferir dados com o Utilitário de Linha de Comandos AzCopy
- Resolução de problemas de Ficheiros do Azure
Para exemplos de código relacionados usando SDKs Java versão 8 preteridos, consulte Exemplos de código usando Java versão 8.