Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As aplicações WinUI podem acessar ficheiros e pastas usando APIs do Windows Runtime (WinRT) para operações comuns de ficheiros. Este artigo mostra-lhe como acessar ficheiros e pastas, consultar bibliotecas do sistema, recuperar propriedades de ficheiros e trabalhar com locais como Imagens e Documentos.
Quando construir aplicações WinUI empacotadas, podes usar APIs WinRT para aceder a ficheiros e pastas em locais específicos. Essas APIs permitem que você leia e escreva configurações de aplicativos, abra seletores de arquivos e pastas e trabalhe com locais em área restrita, como as bibliotecas de vídeo e música. Também pode combinar APIs WinRT com APIs Win32 do SDK Windows e APIs do SDK .NET.
Este artigo concentra-se nas APIs de armazenamento WinRT e demonstra como:
- Consultar arquivos e pastas em bibliotecas do sistema
- Recuperar propriedades básicas do arquivo, como tamanho e data de modificação
- Monitorar alterações na biblioteca de imagens
Consultar ficheiros e pastas
O exemplo seguinte mostra como usar as APIs StorageFolder e StorageFile para consultar a biblioteca Documents para ficheiros e pastas. O exemplo usa o GetFilesInFolderAsync método para iterar recursivamente através da estrutura de pastas e acrescentar os nomes de arquivo a um StringBuilder objeto.
using System.Text;
using Windows.Storage;
...
private async Task<string> GetDocumentsContentsAsync()
{
StorageFolder docsFolder = KnownFolders.DocumentsLibrary;
StringBuilder outputBuilder = new();
await GetFilesInFolderAsync(docsFolder, outputBuilder);
return outputBuilder.ToString();
}
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
}
}
}
Obter propriedades básicas do arquivo
O exemplo a seguir usa o GetFilesInFolderAsync método do exemplo anterior e adiciona a capacidade de recuperar o tamanho do arquivo e a data de modificação para cada arquivo. O exemplo utiliza a API BasicProperties para recuperar o tamanho do ficheiro e a data de modificação para cada ficheiro, formata o tamanho do ficheiro e acrescenta o tamanho e a data de modificação ao objeto StringBuilder após cada nome de ficheiro e pasta.
using System.Text;
using Windows.Storage;
using Windows.Storage.FileProperties;
...
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
// Append each file's size and date modified.
BasicProperties basicProperties = await item.GetBasicPropertiesAsync();
string fileSize = string.Format("{0:n0}", basicProperties.Size);
outputBuilder.AppendLine($" - File size: {fileSize} bytes");
outputBuilder.AppendLine($" - Date modified: {basicProperties.DateModified}");
}
}
}
Trabalhar com a biblioteca de imagens
Neste exemplo, a aplicação é configurada para receber notificações quando a biblioteca de Imagens é atualizada. O exemplo utiliza a API StorageLibrary para recuperar a biblioteca Pictures e o evento DefinitionChanged para receber notificações quando a biblioteca é atualizada. O DefinitionChanged evento é invocado quando a lista de pastas na biblioteca atual é alterada. O exemplo usa a propriedade Folders da biblioteca para iterar pelas pastas na biblioteca de Imagens e grava o nome da pasta no console.
using Windows.Storage;
...
private async Task Configure()
{
StorageLibrary picturesFolder = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
picturesFolder.DefinitionChanged += picturesFolder_DefinitionChanged;
}
private void picturesFolder_DefinitionChanged(StorageLibrary sender, object args)
{
foreach (StorageFolder item in sender.Folders)
{
Console.WriteLine($"Folder {item.Name} found.");
}
}
Ver também
Acesse ficheiros e pastas usando o Windows App SDK e as APIs .NET
Windows developer