Pobieranie właściwości pliku

ważne interfejsy API

Pobierz właściwości — najwyższego poziomu, podstawowego i rozszerzonego — dla pliku reprezentowanego przez obiekt StorageFile.

Uwaga / Notatka

Pełny przykład można znaleźć w przykładzie Dostęp do plików.

Wymagania wstępne

Pobieranie właściwości najwyższego poziomu pliku

Wiele właściwości pliku najwyższego poziomu jest dostępnych jako elementy członkowskie klasy StorageFile . Te właściwości obejmują atrybuty plików, typ zawartości, datę utworzenia, nazwę wyświetlaną, typ pliku itd.

Uwaga / Notatka

Pamiętaj, aby zadeklarować uprawnienia picturesLibrary.

W tym przykładzie wyliczane są wszystkie pliki w bibliotece Obrazów, które uzyskują dostęp do kilku właściwości najwyższego poziomu każdego pliku.

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

Pobieranie podstawowych właściwości pliku

Wiele podstawowych właściwości pliku uzyskuje się najpierw przez wywołanie metody StorageFile.GetBasicPropertiesAsync . Ta metoda zwraca obiekt BasicProperties , który definiuje właściwości rozmiaru elementu (pliku lub folderu), a także czas ostatniej modyfikacji elementu.

W tym przykładzie wyliczane są wszystkie pliki w bibliotece Obrazów, które uzyskują dostęp do kilku podstawowych właściwości każdego pliku.

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

Pobieranie właściwości rozszerzonych pliku

Oprócz właściwości najwyższego poziomu i podstawowego pliku istnieje wiele właściwości skojarzonych z zawartością pliku. Te właściwości rozszerzone są dostępne przez wywołanie metody BasicProperties.RetrievePropertiesAsync . (Obiekt BasicProperties jest uzyskiwany przez wywołanie właściwości StorageFile.Properties ). Chociaż właściwości pliku najwyższego i podstawowego są dostępne jako właściwości klasy — StorageFile i BasicProperties — właściwości rozszerzone są uzyskiwane przez przekazanie kolekcji IEnumerable obiektów String reprezentujących nazwy właściwości, które mają zostać pobrane do metody BasicProperties.RetrievePropertiesAsync. Następnie ta metoda zwraca kolekcję IDictionary . Każda właściwość rozszerzona jest następnie pobierana z kolekcji według nazwy lub indeksu.

W tym przykładzie wyliczane są wszystkie pliki w bibliotece Obrazów, następnie nazwy żądanych właściwości (DataAccessed i FileOwner) są określane w obiekcie List. Obiekt List jest potem przekazywany do metody BasicProperties.RetrievePropertiesAsync w celu pobrania wymienionych właściwości, a następnie właściwości te są pobierane według nazwy ze zwróconego obiektu IDictionary.

Aby uzyskać pełną listę właściwości rozszerzonych pliku, zobacz Właściwości podstawowe systemu Windows .

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