Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
WinUI-Apps können mithilfe von Windows-Runtime-APIs (WinRT) für allgemeine Dateivorgänge auf Dateien und Ordner zugreifen. In diesem Artikel erfahren Sie, wie Sie auf Dateien und Ordner zugreifen, Systembibliotheken abfragen, Dateieigenschaften abrufen und mit Speicherorten wie "Bilder" und "Dokumente" arbeiten.
Wenn Sie verpackte WinUI-Apps erstellen, können Sie WinRT-APIs verwenden, um auf Dateien und Ordner an bestimmten Speicherorten zuzugreifen. Mit diesen APIs können Sie App-Einstellungen lesen und schreiben, Datei- und Ordnerauswahlen öffnen und mit Sandkastenspeicherorten wie den Video- und Musikbibliotheken arbeiten. Sie können WinRT-APIs auch mit Win32-APIs aus dem Windows SDK und APIs aus dem .NET SDK kombinieren.
Dieser Artikel befasst sich mit den WinRT-Speicher-APIs und zeigt, wie Sie:
- Abfragen von Dateien und Ordnern in Systembibliotheken
- Abrufen grundlegender Dateieigenschaften wie Größe und Änderungsdatum
- Überwachen von Änderungen an der Bildbibliothek
Abfragen von Dateien und Ordnern
Das folgende Beispiel zeigt, wie Sie die StorageFolder - und StorageFile-APIs verwenden, um die Dokumentbibliothek für Dateien und Ordner abzufragen. Im Beispiel wird die GetFilesInFolderAsync Methode verwendet, um die Ordnerstruktur rekursiv zu durchlaufen und die Dateinamen an ein StringBuilder Objekt anzufügen.
using System.Text;
using Windows.Storage;
...
private async Task<string> GetDocumentsContentsAsync()
{
StorageFolder docsFolder = KnownFolders.DocumentsLibrary;
StringBuilder outputBuilder = new();
await GetFilesInFolderAsync(docsFolder, outputBuilder);
return outputBuilder.ToString();
}
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
}
}
}
Abrufen grundlegender Dateieigenschaften
Im folgenden Beispiel wird die GetFilesInFolderAsync Methode aus dem vorherigen Beispiel verwendet und die Möglichkeit zum Abrufen der Dateigröße und des Änderungsdatums für jede Datei hinzugefügt. Im Beispiel wird die BasicProperties API verwendet, um die Dateigröße und das Änderungsdatum für jede Datei abzurufen, die Dateigröße zu formatieren und die Größe und das Datum an das StringBuilder-Objekt nach jedem Datei- und Ordnernamen hinzuzufügen.
using System.Text;
using Windows.Storage;
using Windows.Storage.FileProperties;
...
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
// Append each file's size and date modified.
BasicProperties basicProperties = await item.GetBasicPropertiesAsync();
string fileSize = string.Format("{0:n0}", basicProperties.Size);
outputBuilder.AppendLine($" - File size: {fileSize} bytes");
outputBuilder.AppendLine($" - Date modified: {basicProperties.DateModified}");
}
}
}
Arbeiten mit der Bildbibliothek
In diesem Beispiel wird die App so konfiguriert, dass Benachrichtigungen empfangen werden, wenn die Bilder Bibliothek aktualisiert wird. Im Beispiel wird die StorageLibrary-API verwendet, um auf die Bildbibliothek zuzugreifen und das DefinitionChanged-Ereignis zu nutzen, um Benachrichtigungen zu erhalten, wenn die Bibliothek aktualisiert wird. Das DefinitionChanged Ereignis wird aufgerufen, wenn sich die Liste der Ordner in der aktuellen Bibliothek ändert. Im Beispiel wird die Folders-Eigenschaft der Bibliothek verwendet, um die Ordner in der Bilder Bibliothek zu durchlaufen und den Ordnernamen in die Konsole zu schreiben.
using Windows.Storage;
...
private async Task Configure()
{
StorageLibrary picturesFolder = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
picturesFolder.DefinitionChanged += picturesFolder_DefinitionChanged;
}
private void picturesFolder_DefinitionChanged(StorageLibrary sender, object args)
{
foreach (StorageFolder item in sender.Folders)
{
Console.WriteLine($"Folder {item.Name} found.");
}
}
Siehe auch
Zugreifen auf Dateien und Ordner mit Windows App SDK und .NET-APIs
Windows developer