Acessar arquivos e pastas com APIs do WinRT e o SDK do Aplicativo Windows
Os aplicativos empacotados do SDK do Aplicativo Windows podem utilizar as APIs do WinRT para ler e gravar configurações de aplicativo, seletores de pastas e arquivos e locais especiais de área restrita, como a biblioteca de vídeos/músicas. Além disso, qualquer aplicativo de área de trabalho empacotado pode utilizar as APIs do WinRT e do Win32 no SDK do Windows, bem como as APIs fornecidas no SDK do .NET. Este artigo fornece diretrizes sobre como usar as APIs de armazenamento do WinRT para consultar arquivos e pastas, recuperar propriedades de arquivo e trabalhar com a biblioteca Imagens.
Consultar arquivos e pastas
O exemplo a seguir mostra como usar as APIs StorageFolder e StorageFile para consultar a biblioteca Documentos em busca de arquivos e pastas. O exemplo usa o método GetFilesInFolderAsync
para iterar recursivamente por meio da estrutura de pastas e acrescentar os nomes de arquivo a um objeto StringBuilder
.
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 método GetFilesInFolderAsync
do exemplo anterior e adiciona a capacidade de recuperar o tamanho do arquivo e a data modificados para cada arquivo. O exemplo usa a API BasicProperties para recuperar o tamanho do arquivo e a data modificados para cada arquivo, formata o tamanho do arquivo e acrescenta o tamanho e a data modificados ao objeto StringBuilder
após cada nome de arquivo 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 Imagens
Neste exemplo, o aplicativo é configurado para receber notificações quando a biblioteca Imagens é atualizada. O exemplo usa a API StorageLibrary para recuperar a biblioteca Imagens e o evento DefinitionChanged para receber notificações quando ela é atualizada. O evento DefinitionChanged
é invocado quando a lista de pastas na biblioteca atual é alterada. O exemplo usa a propriedade Folders
da biblioteca para iterar por meio das pastas na biblioteca 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.");
}
}
Confira também
Acessar arquivos e pastas com APIs do .NET e o SDK do Aplicativo Windows
Arquivos, pastas e bibliotecas com o SDK do Aplicativo Windows
Windows developer