Udostępnij za pomocą


Pobieranie właściwości pliku

ważne interfejsy API

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

Uwaga / Notatka

Aby uzyskać kompletny przykład, zobacz przykład dostępu 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ć możliwość 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 metody StorageFile.Properties). Podczas gdy właściwości najwyższego poziomu i podstawowe pliku są dostępne jako właściwości klasy — odpowiednioStorageFile i BasicProperties— właściwości rozszerzone są uzyskiwane poprzez 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 wylicza się wszystkie pliki w bibliotece Obrazów, określane są nazwy żądanych właściwości (DataAccessed i FileOwner) w obiekcie List, przekazuje obiekt List do BasicProperties.RetrievePropertiesAsync w celu pobrania tych właściwości, a następnie pobiera te właściwości według nazwy z 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);
    }
}