Obter propriedades do arquivo
APIs importantes
- StorageFile.GetBasicPropertiesAsync
- StorageFile.Properties
- StorageItemContentProperties.RetrievePropertiesAsync
Obtenha as propriedades - nível superior, básicas e estendidas - de um arquivo representado pelo objeto StorageFile.
Observação
Para obter um exemplo completo, veja o Exemplo de acesso a arquivos.
Pré-requisitos
Entender a programação assíncrona para aplicativos UWP (Plataforma Universal do Windows)
Você pode aprender a escrever aplicativos assíncronos em C# ou Visual Basic, consulte Chamar APIs assíncronas em C# ou Visual Basic. Para saber como escrever aplicativos assíncronos em C++, consulte Programação assíncrona em C++.
Permissões de acesso ao local
Por exemplo, o código nesses exemplos exige a funcionalidade picturesLibrary, mas o local talvez exija outra funcionalidade ou até mesmo nenhuma funcionalidade. Para obter mais informações, consulte Permissões de acesso a arquivo.
Obtendo as propriedades de nível superior de um arquivo
Muitas propriedades de nível superior são acessadas como membros da classe StorageFile. Essas propriedades incluem atributos do arquivo, tipo de conteúdo, data de criação, nome para exibição, tipo de arquivo etc.
Observação
Lembre-se de declarar a funcionalidade picturesLibrary.
Este exemplo enumera todos os arquivos da biblioteca Imagens, acessando algumas das propriedades de nível superior de cada arquivo.
// Enumerate all files in the Pictures library.
var folder = Windows.Storage.KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();
foreach (Windows.Storage.StorageFile file in files)
{
StringBuilder fileProperties = new StringBuilder();
// Get top-level file properties.
fileProperties.AppendLine("File name: " + file.Name);
fileProperties.AppendLine("File type: " + file.FileType);
}
Obtendo as propriedades básicas de um arquivo
Muitas propriedades básicas são obtidas chamando primeiro o método StorageFile.GetBasicPropertiesAsync. Esse método retorna um objeto BasicProperties, que define propriedades para o tamanho do item (arquivo ou pasta), bem como a data da última modificação do item.
Este exemplo enumera todos os arquivos da biblioteca Imagens, acessando algumas das propriedades básicas de cada arquivo.
// Enumerate all files in the Pictures library.
var folder = Windows.Storage.KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();
foreach (Windows.Storage.StorageFile file in files)
{
StringBuilder fileProperties = new StringBuilder();
// Get file's basic properties.
Windows.Storage.FileProperties.BasicProperties basicProperties =
await file.GetBasicPropertiesAsync();
string fileSize = string.Format("{0:n0}", basicProperties.Size);
fileProperties.AppendLine("File size: " + fileSize + " bytes");
fileProperties.AppendLine("Date modified: " + basicProperties.DateModified);
}
Obtendo as propriedades estendidas de um arquivo
Além das propriedades de nível superior e básicas (de um arquivo), há muitas propriedades associadas ao conteúdo do arquivo. Essas propriedades estendidas são acessadas com a chamada ao método BasicProperties.RetrievePropertiesAsync. (Um objeto BasicProperties é obtido chamando a propriedade StorageFile.Properties.) Embora propriedades de arquivo de nível superior e básicas sejam acessadas como propriedades de uma classe —StorageFile e BasicProperties, respectivamente — propriedades estendidas são obtidas transmitindo uma coleção IEnumerable de objetos String que representam os nomes das propriedades que devem ser recuperadas para o método BasicProperties.RetrievePropertiesAsync. Esse método então retorna uma coleção IDictionary. Cada propriedade estendida é recuperada da coleção, por nome ou índice.
Este exemplo enumera todos os arquivos da biblioteca Imagens, especifica os nomes das propriedades desejadas (DataAccessed e FileOwner) em um objeto List, transmite esse objeto List para BasicProperties.RetrievePropertiesAsync para recuperar essas propriedades e, em seguida, recupera as propriedades pelo nome do objeto IDictionary retornado.
Consulte as Propriedades Básicas do Windows para obter uma lista completa das propriedades estendidas de um arquivo.
const string dateAccessedProperty = "System.DateAccessed";
const string fileOwnerProperty = "System.FileOwner";
// Enumerate all files in the Pictures library.
var folder = KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();
foreach (Windows.Storage.StorageFile file in files)
{
StringBuilder fileProperties = new StringBuilder();
// Define property names to be retrieved.
var propertyNames = new List<string>();
propertyNames.Add(dateAccessedProperty);
propertyNames.Add(fileOwnerProperty);
// Get extended properties.
IDictionary<string, object> extraProperties =
await file.Properties.RetrievePropertiesAsync(propertyNames);
// Get date-accessed property.
var propValue = extraProperties[dateAccessedProperty];
if (propValue != null)
{
fileProperties.AppendLine("Date accessed: " + propValue);
}
// Get file-owner property.
propValue = extraProperties[fileOwnerProperty];
if (propValue != null)
{
fileProperties.AppendLine("File owner: " + propValue);
}
}