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 Dateien und Ordner unter Verwendung von Windows Runtime (WinRT)-APIs für gängige Dateioperationen zugreifen. In diesem Artikel erfahren Sie, wie Sie Dateien und Ordner access, Systembibliotheken abfragen, Dateieigenschaften abrufen und mit Speicherorten wie "Bilder" und "Dokumente" arbeiten.
Wenn Sie gepackte WinUI-Apps erstellen, können Sie WinRT-APIs verwenden, um Dateien und Ordner an bestimmten Speicherorten zu access. 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 konzentriert sich auf die WinRT storage-APIs und veranschaulicht folgendes:
- 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
Im folgenden Beispiel wird gezeigt, wie Sie die StorageFolder und StorageFile-APIs verwenden, um die Documentsbibliothek 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 API BasicProperties verwendet, um die Dateigröße und das geänderte Datum für jede Datei abzurufen, die Dateigröße zu formatieren und die Größe und das Datum an das objekt StringBuilder nach jedem Datei- und Ordnernamen anzufü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 das PicturesBibliothek und die DefinitionChanged Ereignis abzurufen, um Benachrichtigungen zu empfangen, 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
Zugriff auf Dateien und Ordner mit Windows App SDK und .NET APIs
Windows developer