Dateiverarbeitung von A bis Z

[ 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]

Hier erfahren Sie, wie Sie Ihrer Windows Store-App, für die JavaScript verwendet und die unter Windows 8.1 ausgeführt wird, Dateiverarbeitungsfunktionen hinzufügen.

In jedem Abschnitt dieses Themas wird ein wichtiges Feature für die Dateiverarbeitung beschrieben. Es ist jeweils ein Link zu einem Thema mit weiteren Informationen vorhanden, und es wird angegeben, wie Sie im Begleitbeispiel zu Dateiverarbeitung von A bis Z des Themas schnell auf den relevanten Code zugreifen können.

Hinweis  Viele Funktionen, die zum Interagieren mit Ordnern und Dateien verwendet werden, sind asynchron. Unter Asynchrone Programmierung in JavaScript erfahren Sie, wie Sie asynchrone JavaScript-Apps schreiben.

 

Grundlagen des Dateizugriffs: Aufzählen, Abrufen von Eigenschaften und Lesen und Schreiben von Daten

Schrittsymbol Schnellstart: Programmgesteuerter Dateizugriff

Sie können auf Dateien an Speicherorten wie Ordnern, Bibliotheken, Geräten oder Netzwerkadressen zugreifen, indem Sie nur eine einzige Codezeile verwenden – einen Aufruf der StorageFolder.getFilesAsync-Funktion. Unter Programmgesteuerter Dateizugriff finden Sie Schritt-für-Schritt-Anleitungen, in denen Aufgaben wie das Aufzählen der Dateien und Ordner der höchsten Ebene eines angegebenen Speicherorts und das Abfragen von Dateien an einem Speicherort veranschaulicht werden.

Die folgenden Schritte verdeutlichen, wie Sie Dateien in einem bestimmten Speicherort aufzählen:

  1. Beschaffen Sie ein StorageFolder-Objekt für den gewünschten Speicherort. Dazu verweisen Sie z. B. auf eine der statischen KnownFolders-Eigenschaften, wie KnowFolders.picturesLibrary.
  2. Rufen Sie die StorageFolder.getFilesAsync-Funktion des zurückgegebenen StorageFolder-Objekts auf. Im Begleitbeispiel dieses Themas wird diese Methode ohne Parameter aufgerufen, sodass angegeben wird, dass alle Dateien zurückgegeben werden sollen. Alle Beispiele für das Aufrufen von StorageFolder.getFilesAsync mit einer Abfrage finden Sie unter Schnellstart: Programmgesteuerter Dateizugriff.
  3. Nachdem die StorageFolder.getFilesAsync-Funktion abgeschlossen wurde, können Sie eine forEach-Schleife verwenden, um die einzelnen Dateien zu durchlaufen.

In diesem Codebeispiel werden alle Dateien in "Bilder" aufgezählt.


// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // ... perform your processing.
        });
    });
}

Dieser Screenshot aus dem Begleitbeispiel zeigt ein Beispiel für das Aufzählen der Dateien unter "Bilder".

Screenshot des Dateiverarbeitungsbeispiels zur Aufzählung von Dateien in der Bildbibliothek

Code im Beispiel: Das Beispiel enthält eine Seite mit dem Titel FileAccessBasics (Grundlagen für Dateizugriff), auf der die in diesem Abschnitt verwendeten Codebeispiele zu finden sind. Der relevante JavaScript- und HTML-Code ist in den Dateien FileAccessBasicsPage.js (OnEnumPicturesClick-Funktion) und FileAccessBasicsPage.html zusammengefasst.

Schrittsymbol

Schnellstart: Abrufen der Eigenschaften einer Datei

Mithilfe von Dateieigenschaften wird ein Attribut einer Datei oder ihr Inhalt beschrieben oder quantifiziert. Zu den Dateieigenschaften gehören Daten wie Dateiname, Pfad, Dateigröße, Dateiattribute und das Datum des letzten Zugriffs. Unter Schnellstart: Abrufen der Eigenschaften einer Datei wird erläutert, wie Sie die Eigenschaften der obersten Ebene und die grundlegenden Eigenschaften einer Datei abrufen.

Die folgenden Schritte verdeutlichen, wie Sie entweder Dateieigenschaften der obersten Ebene oder die grundlegenden Eigenschaften abrufen:

In diesem Codebeispiel werden alle Dateien unter "Bilder" aufgezählt und die verschiedenen Dateieigenschaften der obersten Ebene und die grundlegenden Dateieigenschaften angezeigt. Beachten Sie, wie JavaScript-promises-Elemente verwendet werden, um die Ergebnisse von zwei asynchronen Vorgängen (StorageFolder.getFilesAsync und StorageFile.getBasicPropertiesAsync) zu synchronisieren. Weitere Informationen zur asynchronen Programmierung und promises in JavaScript finden Sie unter Asynchrone Programmierung in JavaScript.


// Get a StorageFolder object representing the Pictures Library.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that holds all property information.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    var promises = [];
    files.forEach(function (file) {
        promises.push(WinJS.Promise.as(file));
        promises.push(file.getBasicPropertiesAsync());
    })
    return WinJS.Promise.join(promises);
})
.done(function (results) {
    var counter = 0

    while (counter < results.length) {
        var file = results[counter];
        var props = results[counter + 1];
        outString += "File name: " + file.name + "<br/>";
        outString += "File type: " + file.fileType + "<br/>";
        outString += "File size: " + props.size + "<br/>";
        outString += "<br/>"
        counter = counter + 2;
    }
});

Dieser Screenshot aus dem Begleitbeispiel zeigt ein Beispiel für das Abrufen der verschiedenen Dateieigenschaften der obersten Ebene und grundlegenden Dateieigenschaften.

Screenshot des Dateiverarbeitungsbeispiels zum Abrufen der Eigenschaften von Dateien

Code im Beispiel: Das Beispiel enthält eine Seite mit dem Titel FileAccessBasics (Grundlagen für Dateizugriff), auf der die in diesem Abschnitt verwendeten Codebeispiele zu finden sind. Der relevante JavaScript- und HTML-Code ist in den Dateien FileAccessBasicsPage.js (OnGetFilePropertiesClick-Funktion) und FileAccessBasicsPage.html zusammengefasst.

Schrittsymbol

Schnellstart: Lesen und Schreiben einer Datei

Eine Windows Store-App liest und schreibt Dateien mithilfe der FileIO-Klasse. Unter Schnellstart: Lesen und Schreiben einer Datei finden Sie Codebeispiele, mit denen veranschaulicht wird, wie verschiedene Arten von Daten mithilfe der FileIO- und StorageFile-Klasse gelesen und geschrieben werden.

Dn595121.wedge(de-de,WIN.10).gifSchreiben von Text in eine Datei

  1. Zum Schreiben in eine Datei müssen Sie zuerst ein StorageFile-Objekt beschaffen, um es an eine der FileIO-Funktionen für das Schreiben von Daten zu übergeben. Im Begleitbeispiel wird hierfür mithilfe der StorageFolder.createFileAsync-Funktion eine Datei erstellt.
  2. Sobald Sie über ein StorageFile-Objekt verfügen, können Sie in dessen zugrunde liegende Datei über eine der überladenen FileIO.writeTextAsync-Funktionen Text schreiben.
In diesem Codebeispiel werden das aktuelle Datum und die aktuelle Uhrzeit in eine Beispieldatei geschrieben.

// Create the sample file; replacing it if it already exists.
var lib = Windows.Storage.KnownFolders.picturesLibrary;
lib.createFileAsync("FileHandlingJs.txt", 
    Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (file) {
    if (file) {
        // Format a string based on the current data/time.
        var now = new Date();
        var sampleFileContents = 
            [[now.getMonth() + 1, now.getDate(), now.getFullYear()].join("/"),
            [now.getHours(), AddZero(now.getMinutes())].join(":"),
            now.getHours() >= 12 ? "PM" : "AM"].join(" ");

        // Write the text to the sample file.
        Windows.Storage.FileIO.writeTextAsync(file, sampleFileContents)
        .then(function () {
            // File's contents have been written at this point.
        }, 
        function (error) {
            // Handle error.
        });
    }
});

Dn595121.wedge(de-de,WIN.10).gifLesen von Text aus einer Datei

  1. Zum Lesen des Inhalts einer Datei müssen Sie zuerst ein StorageFile-Objekt beschaffen, um es an eine der FileIO-Funktionen für das Lesen von Daten zu übergeben. Im Begleitbeispiel wird hierfür die StorageFolder.getFileAsync-Funktion aufgerufen.
  2. Sobald Sie über ein StorageFile-Objekt verfügen, können Sie über eine der überladenen FileIO.readTextAsync-Funktionen Text aus dessen zugrunde liegender Datei lesen.
In diesem Codebeispiel wird der Inhalt aus einer Beispieldatei gelesen.

// Open sample file.
Windows.Storage.KnownFolders.picturesLibrary.getFileAsync("FileHandlingJs.txt")
.then(function (file) {
    // If file found ...
    if (file) {
        // Read file's contents.
        Windows.Storage.FileIO.readTextAsync(file).then(function (contents) {
            // Process file contents as needed.
        });
    }
}, function (error) {
    // Handle error.
});

Dieser Screenshot zeigt ein Beispiel für die Ausführung des Beispiels und das Schreiben in die Beispieldatei.

Screenshot aus Dateiverarbeitungsbeispiel: Schreiben von Textdaten in eine Datei

Code im Beispiel: Das Beispiel enthält eine Seite mit dem Titel FileAccessBasics (Grundlagen für Dateizugriff), auf der die in diesem Abschnitt verwendeten Beispiele zu finden sind. Der relevante JavaScript- und HTML-Code ist in den Dateien FileAccessBasicsPage.js (Funktionen OnWriteTextToFileClick und OnReadTextFromFileClick) und FileAccessBasicsPage.html zusammengefasst.

 

Verwenden der Datei- und Ordnerauswahl

Schrittsymbol

Schnellstart: Dateizugriff mit Dateiauswahl

Auswahlelemente – sowohl die Dateiauswahl als auch die Ordnerauswahl – werden zum Anzeigen einer Liste mit Dateien bzw. Ordnern verwendet, aus der Benutzer Elemente zur weiteren Verarbeitung auswählen können. Die Auswahl kann jeweils programmgesteuert so konfiguriert werden, dass anhand eines angegebenen Filters nach Dateien und Ordnern gesucht wird (z. B. Dateien mit speziellen Erweiterungen), bei einem bestimmten Ordner begonnen wird, ein bestimmter Ansichtsmodus angezeigt wird (Liste oder Miniaturansicht) oder verschiedene andere Vorgänge ausgeführt werden.

Mit den folgenden Verfahren wird veranschaulicht, wie Sie die unterschiedlichen Auswahlelemente für die Auswahl einer einzelnen Datei, mehrerer Dateien und eines einzelnen Ordners konfigurieren.

Dn595121.wedge(de-de,WIN.10).gifKonfigurieren einer Dateiauswahl für eine einzelne Datei

  1. Instanziieren Sie ein FileOpenPicker-Objekt.
  2. Legen Sie für das FileOpenPicker-Objekt je nach Bedarf die Eigenschaften viewMode, suggestedStartLocation und fileTypeFilter fest.
  3. Rufen Sie die FileOpenPicker.pickSingleFileAsync-Funktion auf. Wenn die FileOpenPicker.pickSingleFileAsync -Funktion fertig ist, verfügt die App über Lese-/Schreibzugriff auf die ausgewählte Datei.
In diesem Codebeispiel wird eine Dateiauswahl zum Auswählen einer einzelnen Datei instanziiert und angezeigt.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png" ]);

// Display the FileOpenPicker for single file selection.
openPicker.pickSingleFileAsync().then(function (file) {
    // If the user selected a file ...
    if (file) {
        // ... process file as needed.
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(de-de,WIN.10).gifKonfigurieren einer Dateiauswahl für mehrere Dateien

  1. Instanziieren Sie ein FileOpenPicker-Objekt.
  2. Legen Sie für das FileOpenPicker-Objekt je nach Bedarf die Eigenschaften FileOpenPicker.viewMode, FileOpenPicker.suggestedStartLocation und FileOpenPicker.FileTypeFilter fest.
  3. Rufen Sie die FileOpenPicker.pickMultipleFileAsync-Funktion auf. Wenn die FileOpenPicker.pickMultipleFileAsync -Funktion abgeschlossen ist, verfügt die App über Lese-/Schreibzugriff auf die ausgewählten Dateien. Die ausgewählten Dateien werden mit einem Array von StorageFile-Objekten dargestellt. Mit der sizes-Eigenschaft des Arrays wird angegeben, wie viele Dateien ausgewählt wurden, sodass Sie eine for-Schleife mit standardmäßiger Arraynotation verwenden können, um auf die einzelnen StorageFile-Objekte zuzugreifen.
In diesem Codebeispiel wird eine Dateiauswahl zum Auswählen mehrerer Dateien instanziiert und angezeigt.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png"]);

// Display the FileOpenPicker for multiple-file selection.
openPicker.pickMultipleFilesAsync().then(function (files) {
    // If the user selected at least one file ...
    if (files.size > 0) {
        for (var i = 0; i < files.size; i++) {
            // ... process each file - For example, files[i]
        }
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(de-de,WIN.10).gifKonfigurieren einer Ordnerauswahl

  1. Instanziieren Sie ein FolderPicker-Objekt.
  2. Legen Sie für das FolderPicker-Objekt nach Bedarf die Eigenschaften FolderPicker.viewMode, FolderPicker.suggestedStartLocation und FolderPicker.fileTypeFilter fest.
  3. Rufen Sie die FileOpenPicker.pickSingleFileAsync-Funktion auf. Wenn die FolderPicker.pickSingleFolderAsync -Funktion fertig ist, verfügt die App über Lese-/Schreibzugriff auf den ausgewählten Ordner, einschließlich der Unterordner.
In diesem Codebeispiel wird eine Ordnerauswahl instanziiert und angezeigt.

// Instantiate a FolderPicker object.
var folderPicker = new Windows.Storage.Pickers.FolderPicker();

// Set the FileOpenPicker object's key properties.
folderPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.desktop;
folderPicker.fileTypeFilter.replaceAll([".docx", ".xlsx", ".pptx"]);

// Display the FolderPicker for folder selection.
folderPicker.pickSingleFolderAsync().then(function (folder) {
    // If the user selected a folder ...
    if (folder) {
        // ... get the folder object.
        Windows.Storage.AccessCache.StorageApplicationPermissions.
        futureAccessList.addOrReplace("PickedFolderToken", folder);
        // Process folder as needed.
    }
    else {
        // User canceled operation.
    }
});

Dieser Screenshot zeigt die Ergebnisse nach Ausführung des Beispiels und der Auswahl von zwei Dateien ("sample1.png" und "sample2.png").

Screenshot aus Dateiverarbeitungsbeispiel: Verwenden der Datei- und Ordnerauswahl

Code im Beispiel: Das Beispiel enthält eine Seite mit dem Titel File and Folder Pickers (Datei- und Ordnerauswahl), auf der die Aufgaben dieses Abschnitts veranschaulicht werden. Der JavaScript-Code und HTML-Code für dieses Beispiel ist in der Datei FilePickerPage.js bzw. FilePickerPage.html enthalten.

 

Verwenden von OneDrive-Dateien

Schrittsymbol

Schnellstart: Ermitteln der Verfügbarkeit von OneDrive-Dateien

Unter Windows 8.1 können Benutzer OneDrive-Dateien als "Nur online verfügbar" kennzeichnen. Diese Dateien sind nicht verfügbar, wenn der Benutzer die Verbindung mit OneDrive getrennt hat. Mithilfe der neuen StorageFile.isAvailable-Eigenschaft können Sie die Verfügbarkeit einer Datei programmgesteuert ermitteln.

Diese Schritte verdeutlichen, wie Sie die Verfügbarkeit von Dateien mit der StorageFile.isAvailable-Eigenschaft ermitteln.

  1. Beschaffen Sie ein StorageFolder-Objekt für den gewünschten Speicherort. Dazu verweisen Sie z. B. auf eine der statischen KnownFolders-Eigenschaften, wie KnowFolders.picturesLibrary.
  2. Rufen Sie die StorageFolder.getFilesAsync- Funktion des zurückgegebenen StorageFolder-Objekts auf. Im Begleitbeispiel dieses Themas wird diese Methode ohne Parameter aufgerufen, sodass angegeben wird, dass alle Dateien zurückgegeben werden sollen. Alle Beispiele für das Aufrufen von StorageFolder.getFilesAsync mit einer Abfrage finden Sie unter Schnellstart: Programmgesteuerter Dateizugriff.
  3. Nachdem die StorageFolder.getFilesAsync-Funktion abgeschlossen wurde, können Sie eine forEach-Schleife verwenden, um die einzelnen Dateien zu durchlaufen.
In diesem Code werden alle Dateien unter „Bilder“ aufgezählt, und für jede Datei werden der Name, der Anbietername und die Verfügbarkeit angezeigt.

// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that will contain the file name, provider name, 
// and availability for each file.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // Retrieve the file's name, provider name, and availability.
        outString += file.name 
                  + " (on " 
                  + file.provider.displayName 
                  + ") is " 
                  + (file.isAvailable ? "available" : "not available") + "\n";
    });
});

Dieser Screenshot zeigt Beispielergebnisse für die Überprüfung der Dateien unter "Bilder" auf ihre Verfügbarkeit.

Screenshot aus Dateiverarbeitungsbeispiel: Verwenden von OneDrive-Dateien

Code im Beispiel: Das Beispiel enthält eine Seite mit dem Titel "OneDriveFilesPage" (OneDrive-Dateiseite) und einer Schaltfläche, mit der Sie für den lokalen Computer alle Dateien unter "Bilder" aufzählen können. Für jeden Dateinamen werden jeweils der Anbieter der Datei (z. B. "Dieser PC" oder "OneDrive") und die derzeitige Verfügbarkeit angezeigt. Der JavaScript-Code und HTML-Code für dieses Beispiel ist in der Datei OneDriveFilesPage.js bzw. OneDriveFilesPage.html enthalten.

 

Fertigstellung

Symbol für die Store-Anforderungen

Verwenden des Zertifizierungskits für Windows-Apps

Empfohlen. Mit der Ausführung des Zertifizierungskits für Windows-Apps können Sie sicherstellen, dass Ihre App die Anforderungen des Windows Store erfüllt. Es ist ratsam, das Kit jeweils auszuführen, wenn Sie der App umfangreichere Funktionen hinzufügen.

Stoppsymbol

Sie sind fertig! Nachdem Sie jetzt unterschiedliche Funktionen zur Dateiverarbeitung für Ihre App untersucht haben, können Sie eine App wie im Begleitbeispiel zu Dateiverarbeitung von A bis Z erstellen.

 

Möchten Sie mehr erfahren?

Schnellstart: Asynchrone Programmierung in JavaScript

Enthält weitere Informationen zur asynchronen Programmierung in JavaScript.

Schnellstart: Programmgesteuerter Dateizugriff

Enthält weitere Informationen zur Aufzählung von Dateien.

Schnellstart: Lesen und Schreiben einer Datei

Enthält weitere Informationen zum Lesen und Schreiben von Dateien.