Abrufen von Dateieigenschaften
Wichtige APIs
- StorageFile.GetBasicPropertiesAsync
- StorageFile.Properties
- StorageItemContentProperties.RetrievePropertiesAsync
Es werden Eigenschaften – oberste Ebene, grundlegend und erweitert – für eine Datei abgerufen, die durch ein StorageFile-Objekt dargestellt wird.
Hinweis
Ein vollständiges Beispiel findest du im Beispiel zum Dateizugriff.
Voraussetzungen
Kenntnisse in der asynchronen Programmierung für Apps für die universelle Windows-Plattform (UWP)
Informationen zum Schreiben von asynchronen Apps in C# oder Visual Basic finden Sie unter Aufrufen asynchroner APIs in C# oder Visual Basic. Informationen zum Schreiben von asynchronen Apps in C++ finden Sie unter Asynchrone Programmierung in C++.
Zugriffsberechtigungen für den Speicherort
Der Code in diesen Beispielen erfordert beispielsweise den Zugriff auf die picturesLibrary-Funktion, während Ihr Speicherort einen anderen Zugriffstyp oder keinen Zugriff voraussetzt. Weitere Informationen finden Sie unter Berechtigungen für den Dateizugriff.
Abrufen von Eigenschaften der obersten Ebene einer Datei
Auf viele Dateieigenschaften der obersten Ebene kann in Form von Membern der StorageFile-Klasse zugegriffen werden. Diese Eigenschaften enthalten für eine Datei Attribute, Inhaltstyp, Erstellungsdatum, Anzeigename, Dateityp usw.
Hinweis
Denke daran, die Funktion picturesLibrary zu deklarieren.
In diesem Beispiel werden alle Dateien der Bildbibliothek aufgezählt, wobei für jede Datei auf einige Eigenschaften der obersten Ebene zugegriffen wird.
// 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);
}
Abrufen von grundlegenden Eigenschaften einer Datei
Viele grundlegende Dateieigenschaften werden abgerufen, indem zuerst die StorageFile.GetBasicPropertiesAsync-Methode aufgerufen wird. Diese Methode gibt ein BasicProperties-Objekt zurück, das Eigenschaften für die Größe des Elements (Datei oder Ordner) und das letzte Änderungsdatum des Elements definiert.
In diesem Beispiel werden alle Dateien der Bildbibliothek aufgezählt, wobei für jede Datei auf einige grundlegende Eigenschaften zugegriffen wird.
// 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);
}
Abrufen von erweiterten Eigenschaften einer Datei
Neben den Eigenschaften der obersten Ebene und den grundlegenden Eigenschaften sind dem Inhalt der Datei viele Eigenschaften zugeordnet. Auf diese erweiterten Eigenschaften wird zugegriffen, indem die BasicProperties.RetrievePropertiesAsync-Methode aufgerufen wird. (Ein BasicProperties-Objekt wird durch den Aufruf einer StorageFile.Properties-Eigenschaft abgerufen.) Während auf Dateieigenschaften der obersten Ebene und grundlegende Dateieigenschaften in Form von Eigenschaften einer Klasse zugegriffen werden kann – StorageFile und BasicProperties, werden erweiterte Eigenschaften abgerufen, indem eine IEnumerable -Sammlung von String-Objekten mit den Namen der abzurufenden Eigenschaften an die BasicProperties.RetrievePropertiesAsync-Methode übergeben wird. Diese Methode gibt dann eine IDictionary -Sammlung zurück. Anschließend werden die einzelnen erweiterten Eigenschaften anhand des Namens oder Indexes aus der Sammlung abgerufen.
In diesem Beispiel werden alle Dateien der Bildbibliothek aufgezählt und die Namen der gewünschten Eigenschaften (DataAccessed und FileOwner) in einem List-Objekt angegeben. Dieses List-Objekt wird an BasicProperties.RetrievePropertiesAsync übergeben, um die Eigenschaften abzurufen. Diese Eigenschaften werden dann anhand des Namens aus dem zurückgegebenen IDictionary-Objekt abgerufen.
Eine vollständige Liste der erweiterten Eigenschaften einer Datei findest du im Thema zu den Windows Core-Eigenschaften.
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);
}
}