Partilhar via


Obter propriedades do arquivo

APIs importantes

Obtenha propriedades — de topo, básicas e avançadas — para um ficheiro representado por um objeto StorageFile.

Observação

Para um exemplo completo, consulte o exemplo de acesso ao ficheiro.

Pré-requisitos

Obtenção das propriedades de topo de um ficheiro

Muitas propriedades de ficheiros de topo estão acessíveis como membros da classe StorageFile . Estas propriedades incluem os atributos do ficheiro, tipo de conteúdo, data de criação, nome de exibição, tipo de ficheiro, e assim por diante.

Observação

Lembre-se de declarar a capacidade da PicturesLibrary.

Este exemplo enumera todos os ficheiros na biblioteca Pictures, acedendo a algumas das propriedades de topo de cada ficheiro.

// 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);
}

Obter as propriedades básicas de um ficheiro

Muitas propriedades básicas dos ficheiros são obtidas ao chamar primeiro o método StorageFile.GetBasicPropertiesAsync . Este método devolve um objeto BasicProperties , que define propriedades para o tamanho do item (ficheiro ou pasta) bem como para a última modificação do item.

Este exemplo enumera todos os ficheiros na biblioteca Pictures, acedendo a algumas das propriedades básicas de cada ficheiro.

// 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);
}

Obtenção das propriedades estendidas de um ficheiro

Para além das propriedades de topo e básicas do ficheiro, existem muitas propriedades associadas ao conteúdo do ficheiro. Estas propriedades estendidas são acedidas chamando o método BasicProperties.RetrievePropertiesAsync . (Um objeto BasicProperties é obtido ao chamar a propriedade StorageFile.Properties .) Embora as propriedades de ficheiros de topo e basic sejam acessíveis como propriedades de uma classe — StorageFile e BasicProperties, respetivamente — as propriedades estendidas são obtidas ao passar uma coleção IEnumerable de objetos String que representam os nomes das propriedades que devem ser recuperadas para o método BasicProperties.RetrievePropertiesAsync. Este método devolve então uma coleção IDictionary . Em seguida, cada propriedade estendida é recuperada da coleção por nome ou por índice.

Este exemplo enumera todos os ficheiros na biblioteca Pictures, especifica os nomes das propriedades desejadas (DataAccessed e FileOwner) num objeto List , passa esse objeto List para BasicProperties.RetrievePropertiesAsync para recuperar essas propriedades e depois recupera essas propriedades pelo nome do objeto IDictionary devolvido.

Consulte as Propriedades Centrais do Windows para uma lista completa das propriedades estendidas de um ficheiro.

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);
    }
}