Schnellstart: Programmgesteuerter Dateizugriff (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Greifen Sie auf Dateien und Ordner zu, die sich an einem bestimmten Speicherort wie einem Ordner, einer Bibliothek, einem Gerät oder einer Netzwerkadresse befinden. Sie können auch durch Erstellen von Datei- und Ordnerabfragen Dateien und Ordner an bestimmten Speicherorten abrufen.

Voraussetzungen

  • Kenntnisse in der asynchronen Programmierung für Windows-Runtime-Apps mit JavaScript

    Unter Schnellstart: Verwenden von Zusagen in JavaScript erfahren Sie, wie Sie asynchrone Apps erstellen.

  • Zugriffsberechtigungen für den Speicherort

    Der Code in diesen Beispielen erfordert beispielsweise den Zugriff auf die Bildbibliothek, während Ihr Speicherort einen anderen Zugriffstyp oder keinen Zugriff voraussetzt. Weitere Informationen erhalten Sie unter Dateizugriff und Berechtigungen. Weitere Informationen über die Verwendung der Dateiauswahl für den Zugriff auf Dateien und Ordner finden Sie unter Schnellstart: Dateizugriff mit Dateiauswahl.

Auflisten der Dateien und Ordner oberster Ebene an einem Speicherort

  1. Abrufen von "StorageFolder" für den Speicherort.

    Wenn Sie eine Liste des Inhalts eines bestimmten Ordners abrufen möchten, müssen Sie zuerst ein StorageFolder-Objekt für diesen Speicherort abrufen.

    Das Beispiel für Ordnerenumeration zeigt, wie die Bildbibliothek abgerufen werden kann:

    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 Dateizugriff und Funktionen erhalten Sie in Dateizugriff und Berechtigungen und Zugreifen auf Benutzerressourcen mit Windows-Runtime.

     

  2. Abrufen einer Liste von Ordnerinhalten.

    Das Beispiel für Ordnerenumeration zeigt, wie eine Liste mit Elementen in der Bildbibliothek abgerufen werden kann:

    picturesLibrary.getItemsAsync().then(function (items) {
    

    Das vorherige Beispiel zeigte bereits, dass Sie getItemsAsync() aufrufen können, um eine Liste des gesamten Ordnerinhalts (ein StorageFolder-Objekt) abzurufen. Wenn Sie nicht alle Elemente anzeigen möchten, können Sie getItemsAsync(startIndex, maxItemsToRetrieve) aufrufen, um Ordnerinhalte in einem Bereich nach Index abzurufen.

    Wenn Sie eine getItemsAsync-Methode für einen Ordner aufrufen, wird die Liste der Elemente auf die Dateien und Unterordner in diesem Ordner beschränkt. Die Dateien und Ordner in den Unterordnern sind nicht enthalten.

    Rufen Sie eine getFilesAsync-Methode auf, wenn Sie eine Liste der Dateien in einem Ordner benötigen. Rufen Sie eine getFoldersAsync-Methode auf, wenn Sie eine Liste von Ordnern benötigen.

    Verwenden Sie nach dem Abrufvorgang then zum Definieren einer Funktion, die die Liste der empfangenen Objekte verwendet (im vorherigen Beispiel items) und die zusätzlichen Aufgaben ausführt, die Sie benötigen.

  3. Arbeiten mit der Liste.

    Das Beispiel für Ordnerenumeration zeigt, wie weitere Aufgaben mit der Liste von items in der Bildbibliothek ausgeführt werden können:

    
        outputHeader(picturesLibrary.name, items.size);
        items.forEach(function (item) { 
            if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
                output(id(picturesLibrary.name), item.name + "\\"); 
            } 
            else { 
                output(id(picturesLibrary.name), item.fileName); 
            } 
        });
    

    Im vorigen Beispiel werden der name des Ordners und das size-Element der Liste an eine Hilfsfunktion übergeben, die diese Informationen dem Benutzer anzeigen.

    Zudem können Sie die Liste von Elementen durchlaufen, um weitere Aufgaben auszuführen, wie das vorherige Beispiel zeigt. Sie können forEach für Ihre Liste von Elementen aufrufen, um Elemente in der Liste zu durchlaufen. Die Funktion, der Sie forEach übergeben, sollte ein Listenelement als Argument verwenden. Sie wird für jedes item-Element in der Liste ausgeführt.

    Sie können jedes item-Element weiter verarbeiten, indem Sie dafür Methoden aufrufen. Im vorherigen Beispiel haben wir ermittelt, ob item ein Ordner (StorageFolder-Objekt) oder eine Datei (StorageFile-Objekt) ist, indem wir das Ergebnis der isOfType-Methode, die sowohl in Dateien als auch Ordnern vorhanden ist, mit dem StorageItemTypes-Enumerationswert verglichen haben. Anhand dieses Vergleichs werden verschiedene Informationen über das Element der output-Hilfsfunktion übergeben. Sie können jedoch noch eine Reihe zusätzlicher Aufgaben ausführen.

    Mehr Kontext und weitere Informationen dazu, wie die outputHeader- und output-Funktionen funktionieren, erhalten Sie im Beispiel für Ordnerenumeration.

Wenn Sie fertig sind, sollte der Code ungefähr so aussehen:


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

//  Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
    // Then perform tasks with the list of files and folders that was retrieved

    // For example, display name of containing folder and count of items in folder
    outputHeader(picturesLibrary.name, items.size);

    // For example, display info for each item
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    }); 
});

Abfragen von Dateien aus einem Speicherort

  1. Abrufen des enthaltenden Ordners.

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

    Das Beispiel für Ordnerenumeration zeigt, wie die Bildbibliothek abgerufen werden kann:

    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 Dateizugriff und Funktionen erhalten Sie in Dateizugriff und Berechtigungen und Zugreifen auf Benutzerressourcen mit Windows-Runtime.

     

  2. 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.

    Das Beispiel für Ordnerenumeration zeigt, wie eine Ordnerabfrage erstellt werden kann, die Bilder in der Bildbibliothek nach dem Monat, in dem sie aufgenommen oder erstellt wurden, 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.

  3. Abrufen der Liste virtueller Ordner aus der Abfrage.

    Im FolderEnumeration-Beispiel auf der Homepage für 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.

  4. Abrufen der Liste der Dateien im virtuellen Ordner.

    Das Beispiel für Ordnerenumeration zeigt, wie der month-Ordner dazu verwendet werden kann, eine Liste mit Bildern abzurufen, die in dem 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.

Wenn Sie fertig sind, sollte der Code ungefähr so aussehen:


// 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
        }); 
    }); 
});

Zusammenfassung und nächste Schritte

Informationen zum Lesen und Schreiben von Dateien finden Sie in Schnellstart: Lesen und Schreiben einer Datei und im Beispiel zum Dateizugriff. Weitere Informationen dazu, wie Sie mit Bilddateien arbeiten, erhalten Sie in So wird's gemacht: Auswählen und Anzeigen von Bildern oder So wird's gemacht: Decodieren von Bildern und dem Beispiel zum Speichern und Laden von Inhalten mithilfe eines Blobs.

Weitere Informationen über den Zugriff auf Dateien mithilfe der Dateiauswahl finden Sie unter Schnellstart: Dateizugriff mit Dateiauswahl.

Verwandte Themen

Zugreifen auf Daten und Dateien

Dateizugriff und Berechtigungen

Schnellstart: Dateizugriff mit Dateiauswahl

Schnellstart: Lesen und Schreiben einer Datei

Beispiel für programmgesteuerte Dateisuche

Beispiel für Ordnerenumeration

Beispiel zum Dateizugriff

Beispiel zum Speichern und Laden von Inhalten mithilfe eines Blobs

Referenz

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.StorageItemTypes enum

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class