Freigeben über


Zugreifen auf Dateien und Ordner mit Windows App SDK und WinRT-APIs

Verpackte Windows App SDK-Apps können WinRT-APIs zum Lesen und Schreiben von App-Einstellungen, zur Datei- und Ordnerauswahl und zu speziellen Speicherorten im Sandkasten verwenden, wie z. B. Video-/Musikbibliothek. Darüber hinaus kann jede verpackte Desktop-App sowohl WinRT- als auch Win32-APIs im Windows SDK sowie die im .NET SDK bereitgestellten APIs verwenden. Dieser Artikel enthält Anleitungen zum Verwenden der WinRT-Speicher-APIs zum Abfragen von Dateien und Ordnern, zum Abrufen von Dateieigenschaften und zum Arbeiten mit der Bilder-Bibliothek.

Abfragen von Dateien und Ordnern

Das folgende Beispiel zeigt, wie Sie die StorageFolder- und StorageFile-APIs verwenden, um die Dokumenten-Bibliothek nach Dateien und Ordnern 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}");
        }
    }
}

Grundlegende Dateieigenschaften abrufen

Im folgenden Beispiel wird die GetFilesInFolderAsync-Methode aus dem vorherigen Beispiel verwendet und die Möglichkeit hinzugefügt, die Dateigröße und das geänderte Datum für jede Datei abzurufen. Im Beispiel wird die BasicProperties-API verwendet, um die Dateigröße und das geänderte Datum für jede Datei abzurufen, die Dateigröße zu formatieren und nach jedem Datei- und Ordnernamen die Größe und das geänderte Datum an das StringBuilder-Objekt 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 Bilder-Bibliothek

In diesem Beispiel ist die App so konfiguriert, dass sie Benachrichtigungen empfängt, wenn die Bilder-Bibliothek aktualisiert wird. Im Beispiel wird die StorageLibrary-API verwendet, um die Bilder-Bibliothek und das 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

Zugreifen auf Dateien und Ordner mit Windows App SDK und .NET-APIs

Dateien, Ordner und Bibliotheken mit Windows App SDK