So wird's gemacht: Abrufen von Dateigruppen mithilfe von Abfragen (Apps im Metro-Stil mit JavaScript und HTML)

[Diese Dokumentation ist vorläufig. Änderungen vorbehalten.]

Verwenden Sie Abfragen, um Gruppen von Dateien auf Basis von Kriterien, die Sie angeben, von einem bestimmten Speicherort (Ordner, Dateigruppe, Bibliothek, Gerät oder Netzwerkadresse) abzurufen.

Voraussetzungen

Abrufen des enthaltenden Ordners

Wenn Sie eine Liste des Inhalts eines bestimmten Ordners abrufen möchten, müssen Sie zuerst den Ordner abrufen.

Im FolderEnumeration-Beispiel auf der Homepage für Metro-App-Beispiele wird die Bildbibliothek abgerufen:

var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

Im vorherigen Beispiel dient KnownFolders zum Abrufen der Bildbibliothek (als StorageFolder-Objekt). Sie können KnownFolders-Eigenschaften verwenden, um Ordner abzurufen, die eine Reihe von Benutzerressourcen wie Bibliotheken, Geräte oder Netzwerkadressen darstellen.

Wichtig  Wenn Sie eine KnownFolders-Eigenschaft zum Zugreifen auf eine Bibliothek, ein Gerät oder eine Netzwerkadresse verwenden möchten, muss die App über die entsprechende Funktion im App-Manifest verfügen. Weitere Informationen zu Funktionen finden Sie unter Zugreifen auf Benutzerressourcen mit der Windows-Runtime und Schnellstart: Arbeiten mit Dateien.

Erstellen einer Ordnerabfrage zum Organisieren von Dateien nach bestimmten Kriterien

Wenn Sie eine Ordnerabfrage von einem Ordner aus erstellen, werden die Dateien und Unterordner in diesem Ordner nach Ihren Kriterien in Gruppen organisiert. Die resultierenden Gruppen sind virtuelle Ordner, die wie ein Ordner im Dateisystem funktionieren. Sie können darin enthaltene Dateien nach Bedarf abrufen und verarbeiten.

Im FolderEnumeration-Beispiel auf der Homepage für Metro-App-Beispiele wird eine Ordnerabfrage erstellt, die Bilder in der Bildbibliothek nach dem Datum der Erstellung/Aufnahme gruppiert:

var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);

Im vorherigen Beispiel wurde gezeigt, dass Sie createFolderQuery(query) für Ihren Ordner aufrufen können, um eine Ordnerabfrage zu erstellen (ein StorageFolderQueryResult-Objekt). Sie dient dazu, die Dateien in dem Ordner und seinen Unterordnern basierend auf dem von Ihnen angegebenen CommonFolderQuery-Wert in virtuellen Ordnern zu organisieren. In dem Beispiel werden die Bilddateien im Ordner picturesLibrary nach dem Monat (CommonFolderQuery.groupByMonth) gruppiert, in dem die Bilder aufgenommen oder erstellt wurden.

Ordnerabfragen können Sie zudem durch Aufrufen von createFolderQuery() oder createFolderQueryWithOptions erstellen.

Abrufen der Liste virtueller Ordner aus der Abfrage

Im FolderEnumeration-Beispiel auf der Homepage für Metro-App-Beispiele wird die Liste der virtuellen Ordner mit query abgerufen:

query.getFoldersAsync().then(function (monthList) {
    monthList.forEach(function (month) { 

Im vorherigen Beispiel wird gezeigt, wie Sie getFoldersAsync() für Ihre Ordnerabfrage aufrufen können, um eine Liste Ihrer virtuellen Ordner abzurufen. Verwenden Sie then zur Definition einer Funktion, die Ihre Liste verarbeitet. In unserem Beispiel gibt die Abfrage eine Liste virtueller Ordner zurück, die Monate darstellen (monthList), und wir verarbeiten unsere Liste durch Aufrufen von monthList.forEach und Definieren einer Funktion zur Verarbeitung jedes einzelnenmonth-Ordners.

Abrufen der Liste der Dateien im virtuellen Ordner

Im FolderEnumeration-Beispiel auf der Homepage für Metro-App-Beispiele wird der month-Ordner zum Abrufen der Liste von Bildern verwendet, die in dem betreffenden Monat aufgenommen oder erstellt wurden:

        var tempMonthName = month.name; 
        month.getFilesAsync().then(function (files) {

Tipp  Wenn Sie Informationen über Ihren virtuellen Ordner (month) speichern möchten, um sie später zu verwenden, können Sie dies tun. Im vorherigen Beispiel wird der Name unseres virtuellen Ordners (month.name) in tempMonthName gespeichert, damit wir ihn bei der Verarbeitung unserer Bilderliste (files) verwenden können.

Verwenden Sie then, um eine Funktion zu definieren, die die Liste der empfangenen Dateien verarbeitet. Weitere Informationen über das Arbeiten mit Dateilisten finden Sie unter Abrufen von Datei- und Ordnerlisten aus einem Ordner, oder laden Sie das FolderEnumeration-Beispiel auf der Homepage für Metro-App-Beispiele herunter.

Vollständiges Beispiel

// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; 

// Create query
var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth); 

// Get virtual folders from query
query.getFoldersAsync().then(function (monthList) { 
    monthList.forEach(function (month) {
 
        var tempMonthName = month.name;
        // Get files from virtual folder 
        month.getFilesAsync().then(function (files) { 
            // Then perform tasks with retrieved files
        }); 
    }); 
});

Verwandte Themen

Zugreifen auf Daten in Dateien

Abrufen von Datei- und Ordnerlisten aus einem Ordner

Schnellstart: Arbeiten mit Dateien

Zugreifen auf Benutzerressourcen mit Windows Runtime

Homepage für Metro-App-Beispiele

Nachschlagewerk

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class