Получение свойств файла
Важные API
- StorageFile.GetBasicPropertiesAsync
- StorageFile.Properties
- StorageItemContentProperties.RetrievePropertiesAsync
Получите свойства (верхнего уровня, базовые и расширенные ) для файла, представленного объектом StorageFile.
Примечание.
Полный пример: пример доступа к файлам.
Необходимые компоненты
Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP).
Вы можете узнать, как писать асинхронные приложения в C# или Visual Basic, см . статью "Вызов асинхронных API" в C# или Visual Basic. Сведения о написании асинхронных приложений в C++см. в статье "Асинхронное программирование" в C++.
Права доступа к расположению
Например, для кода в этих примерах требуется возможность изображенияLibrary , но ваше расположение может потребовать другой возможности или нет вообще. Дополнительные сведения см. в разделе "Разрешения на доступ к файлам".
Получение свойств верхнего уровня файла
Многие свойства файла верхнего уровня доступны как члены класса StorageFile . К этим свойствам относятся атрибуты файлов, тип контента, дата создания, отображаемое имя, тип файла и т. д.
Примечание.
Обязательно объявите возможность 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);
}
Получение основных свойств файла
Многие основные свойства файлов получаются при первом вызове метода StorageFile.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 получается путем вызова свойства StorageFile.Properties.) Хотя свойства верхнего уровня и базовые свойства файлов доступны как свойства класса — StorageFile и 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);
}
}