Programar para os Ficheiros do Azure com Java
Aprenda as noções básicas sobre o desenvolvimento de aplicações Java que utilizam Ficheiros do Azure para armazenar dados. Crie uma aplicação de consola e aprenda ações básicas com Ficheiros do Azure APIs:
- Criar e eliminar partilhas de ficheiros do Azure
- Criar e eliminar diretórios
- Enumerar ficheiros e diretórios numa partilha de ficheiros do Azure
- Carregar, transferir e eliminar um ficheiro
Dica
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, precisará do Java Development Kit (JDK) e do SDK de Armazenamento do Azure para Java. Também deve ter criado uma conta de armazenamento do Azure.
Configurar a aplicação para utilizar Ficheiros do Azure
Para utilizar as APIs Ficheiros do Azure, adicione o seguinte código à parte superior do ficheiro Java a partir do qual pretende aceder Ficheiros do Azure.
// Include the following imports to use Azure Files APIs
import com.azure.storage.file.share.*;
Configurar uma cadeia de ligação de armazenamento do Azure
Para utilizar Ficheiros do Azure, tem de se ligar à sua conta de armazenamento do Azure. Configure uma cadeia de ligação e utilize-a para ligar à sua conta de armazenamento. Defina uma variável estática para manter a cadeia de ligaçã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>";
Aceder a uma partilha de ficheiros do Azure
Para aceder Ficheiros do Azure, crie um objeto ShareClient. Utilize 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 ficheiros e diretórios no Ficheiros do Azure são armazenados num contentor denominado partilha.
O método ShareClient.create gera uma exceção se a partilha já existir. Coloque a chamada para criar num try/catch
bloco e processe 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 seguinte código de exemplo elimina uma partilha de ficheiros.
Elimine uma partilha ao chamar 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 ficheiros dentro de subdiretórios em vez de os ter todos no diretório de raiz.
O código seguinte cria um diretório ao chamar ShareDirectoryClient.create. O método de exemplo devolve um Boolean
valor que indica se criou o diretório com êxito.
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
Eliminar um diretório é uma tarefa simples. Não pode eliminar um diretório que ainda contenha ficheiros ou subdiretórios.
O método ShareDirectoryClient.delete gera uma exceção se o diretório não existir ou não estiver vazio. Coloque a chamada para eliminar num try/catch
bloco e processe 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 ficheiros e diretórios numa partilha de ficheiros do Azure
Obtenha uma lista de ficheiros e diretórios ao chamar ShareDirectoryClient.listFilesAndDirectories. O método devolve uma lista de objetos ShareFileItem nos quais pode iterar. O código seguinte lista ficheiros 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 seguinte carrega um ficheiro local para Ficheiros do Azure ao chamar o método ShareFileClient.uploadFromFile. O método de exemplo seguinte devolve um Boolean
valor que indica se carregou com êxito o ficheiro 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 é transferir ficheiros de uma partilha de ficheiros do Azure.
O exemplo seguinte transfere o ficheiro especificado para o diretório local especificado no parâmetro destDir . O método de exemplo torna o nome de ficheiro transferido exclusivo ao prefixar 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 de Ficheiros do Azure comum é a eliminação de ficheiros.
O código seguinte elimina o ficheiro 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 eliminar o ficheiro.
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;
}
}
Passos seguintes
Se quiser saber mais sobre outras APIs de armazenamento do Azure, siga estas ligações.
- Azure para programadores de Java
- SDK do Azure para Java
- SDK do Azure para Android
- Azure File Share client library for Java SDK Reference
- API REST dos Serviços do Armazenamento do Azure
- Blogue da Equipa de Armazenamento do Azure
- Transferir dados com o Utilitário de Linha de Comandos AzCopy
- Resolução de problemas de Ficheiros do Azure
Para obter exemplos de código relacionados com SDKs da versão 8 do Java preterido, veja Exemplos de código com a versão 8 do Java.