Получение свойств файла

Важные API

Получите свойства (верхнего уровня, базовые и расширенные ) для файла, представленного объектом StorageFile.

Примечание.

Полный пример: пример доступа к файлам.

Необходимые компоненты

  • Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP).

    Вы можете узнать, как писать асинхронные приложения в C# или Visual Basic, см . статью "Вызов асинхронных API" в C# или Visual Basic. Сведения о написании асинхронных приложений в C++см. в статье "Асинхронное программирование" в C++.

  • Права доступа к расположению

    Например, для кода в этих примерах требуется возможность изображенияLibrary , но ваше расположение может потребовать другой возможности или нет вообще. Дополнительные сведения см. в разделе "Разрешения на доступ к файлам".

Получение свойств верхнего уровня файла

Многие свойства файла верхнего уровня доступны как члены класса служба хранилища File. К этим свойствам относятся атрибуты файлов, тип контента, дата создания, отображаемое имя, тип файла и т. д.

Примечание.

Обязательно объявите возможность picturesLibrary.

В этом примере перечисляются все файлы в библиотеке изображений, доступ к нескольким свойствам верхнего уровня каждого файла.

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

Получение основных свойств файла

Многие основные свойства файлов получаются при первом вызове метода служба хранилища File.GetBasicPropertiesAsync. Этот метод возвращает объект BasicProperties , который определяет свойства для размера элемента (файла или папки), а также при последнем изменении элемента.

В этом примере перечисляются все файлы в библиотеке изображений, доступ к нескольким основным свойствам каждого файла.

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

Получение расширенных свойств файла

Помимо свойств верхнего уровня и базовых файлов, существует множество свойств, связанных с содержимым файла. К этим расширенным свойствам обращается метод BasicProperties.RetrievePropertiesAsync . (A Объект BasicProperties получается путем вызова свойства служба хранилища File.Properties.) Хотя свойства верхнего уровня и базовые свойства файлов доступны как свойства класса — служба хранилища File и BasicProperties, соответственно— расширенные свойства получаются путем передачи коллекции объектов String iEnumerable, представляющих имена свойств, которые должны быть получены в метод BasicProperties.RetrievePropertiesAsync. Затем этот метод возвращает коллекцию IDictionary . Затем каждое расширенное свойство извлекается из коллекции по имени или по индексу.

В этом примере перечисляются все файлы в библиотеке рисунков, указываются имена требуемых свойств (DataAccessed и FileOwner) в объекте List, передается объект List в BasicProperties.RetrievePropertiesAsync для получения этих свойств, а затем извлекает эти свойства по имени из возвращаемого объекта IDictionary.

В разделе Основные свойства 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);
    }
}