Schnellstart: Lesen und Schreiben von Dateien (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]
Lesen und Schreiben einer Datei mithilfe eines StorageFile-Objekts.
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.
Kenntnis, wie die Datei abgerufen wird, aus der Sie lesen und/oder in die Sie schreiben möchten
Unter Schnellstart: Dateizugriff mit Dateiauswahl erfahren Sie, wie Sie eine Datei durch das Aufrufen einer Dateiauswahlf abrufen können.
Die in den Beispielen verwendete Datei
Der Code in diesen Beispielen stammt aus dem Beispiel zum Dateizugriff und hängt von der globalen sampleFile
-Variable des Beispiels ab. Diese Variable stellt die Datei (sample.dat
) dar, aus der in den Beispielen gelesen bzw. in die geschrieben wird.
Im Beispiel zum Dateizugriff wird die Datei sample.dat
erstellt und das zurückgegebene storageFile-Objekt gespeichert:
Windows.Storage.ApplicationData.current.localFolder.createFileAsync("sample.dat",
Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) {
sampleFile = file;
});
Hinweis Sie müssen zuerst die benötigten Funktionen im App-Manifest angeben, bevor Sie Dateien in Bibliotheken erstellen können. Weitere Informationen zu Dateizugriff und Funktionen erhalten Sie in Dateizugriff und Berechtigungen und Zugreifen auf Benutzerressourcen mit Windows-Runtime.
Schreiben in eine Datei
In diesen Schritten wird veranschaulicht, wie Sie in eine Datei schreiben, wenn eine beschreibbare Datei und eine storageFile vorliegen, die sie darstellt.
Schreiben von Text in eine Datei
Schreiben Sie Text in die Datei, indem Sie die writeTextAsync-Methoden der fileIO-Klasse aufrufen.
Im Beispiel zum Dateizugriff sehen Sie, wie writeTextAsync(file, contents) zum Schreiben von beliebigem Text in sampleFile
aufgerufen wird:
Windows.Storage.FileIO.writeTextAsync(sampleFile, "Swift as a shadow").then(function () {
// Add code to do something after the text is written to the file
});
Die writeTextAsync-Methoden besitzen zwar keinen Rückgabewert, Sie können aber mit then oder done eine Funktion deklarieren. Nachdem der Text dann in die Datei geschrieben wurde, können Sie wie im Beispiel gezeigt weitere Aufgaben ausführen.
Schreiben von Bytes in eine Datei mithilfe eines Puffers
Rufen Sie einen Puffer der Bytes auf, die in die Datei geschrieben werden sollen.
Beispiel: Das Beispiel zum Dateizugriff ruft convertStringToBinary auf, um einen Puffer der Bytes basierend auf einer beliebigen Zeichenfolge abzurufen:
var buffer = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary( 'What fools these mortals be', Windows.Security.Cryptography.BinaryStringEncoding[''] );
Schreiben Sie die Bytes aus dem Puffer in die Datei, indem Sie die writeBufferAsync-Methode der fileIO-Klasse aufrufen.
Das Beispiel zum Dateizugriff veranschaulicht, wie Sie mit writeBufferAsync Bytes aus einem Puffer folgendermaßen in
sampleFile
schreiben:Windows.Storage.FileIO.writeBufferAsync(sampleFile, buffer).then(function () { // Add code to do something after the text is written to the file });
writeBufferAsync besitzt zwar keinen Rückgabewert, Sie können aber mit then oder done eine Funktion deklarieren. Nachdem der Text dann in die Datei geschrieben wurde, können Sie wie im Beispiel gezeigt weitere Aufgaben ausführen.
Schreiben von Text in eine Datei mit einem transaktionsgebundenen Datenstrom
Öffnen Sie einen Datenstrom in Ihre Datei, indem Sie die storageFile.openTransactedWriteAsync-Methode aufrufen. Ein Datenstrom des Dateiinhalts wird zurückgegeben, wenn der Vorgang zum Öffnen abgeschlossen ist.
Das Beispiel zum Dateizugriff veranschaulicht, wie ein Datenstrom zu einer Datei (
sampleFile
) durch einen Aufruf der storageFile.openTransactedWriteAsync-Methode geöffnet wird:sampleFile.openTransactedWriteAsync().then(writeToStream);
Stellen Sie sicher, dass Sie eine Funktion deklarieren (wie
writeToStream
), um dietransaction
zu erfassen (Typ StorageStreamTransaction). Nach dem Abschluss der Methode können Sie dann wie folgt in die Datei schreiben:function writeToStream(transaction) { // Add code to use the stream to write to your file }
Führen Sie diese Schritte aus, um der
writeToStream
-Funktion Code hinzuzufügen. Mit dieser Funktion wird Text in die Datei geschrieben, nachdem die storageFile.openAsync-Methode abgeschlossen ist.Verwenden Sie die
transaction
, um Text in den Datenstrom zu schreiben, indem Sie ein neues dataWriter-Objekt erstellen und die dataWriter.writeString-Methode aufrufen.Das Beispiel zum Dateizugriff veranschaulicht, wie Sie Text in den Datenstrom schreiben:
var dataWriter = new Windows.Storage.Streams.DataWriter(transaction.stream); dataWriter.writeString("Swift as a shadow");
Speichern Sie den Text in Ihrer Datei, und schließen Sie den Datenstrom, indem Sie die Methoden dataWriter.storeAsync und
transaction
.commitAsync aufrufen.Das Beispiel zum Dateizugriff veranschaulicht, wie Sie den Text in der Datei speichern und den Datenstrom schließen:
dataWriter.storeAsync().then(function () { transaction.commitAsync().done(function () { // Text in stream has been saved to the file transaction.close(); }); });
Sie können das Beispiel zum Dateizugriff herunterladen, um diese Codebeispiele im Kontext in den Funktionen anzuzeigen.
Lesen aus einer Datei
In diesen Schritten wird erläutert, wie Sie aus einer Datei lesen, wenn eine lesbare Datei und eine storageFile vorliegen, die sie darstellt.
Lesen von Text aus einer Datei
Lesen Sie Text aus einer Datei, indem Sie die readTextAsync-Methoden der fileIO-Klasse aufrufen.
Das Beispiel zum Dateizugriff veranschaulicht, wie Sie Text aus einer Datei lesen, indem Sie readTextAsync(file) aufrufen, um aus sampleFile
zu lesen:
Windows.Storage.FileIO.readTextAsync(sampleFile).then(function (contents) {
// Add code to process the text read from the file
});
Sie können mit then oder done eine Funktion deklarieren, um den aus der Datei gelesenen Text zu erfassen und zu verarbeiten. Nach Abschluss der readTextAsync-Methode wird der Text als String-Objekt (contents
im Beispiel) an diese Funktion übergeben.
Lesen von Bytes aus einer Datei mit einem Puffer
Lesen Sie Bytes aus der Datei in Ihren Puffer, indem Sie die readBufferAsync-Methode der fileIO-Klasse aufrufen.
Das Beispiel zum Dateizugriff veranschaulicht, wie Sie Bytes aus dem Puffer einer Datei lesen, indem Sie readBufferAsync aufrufen:
Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
// Add code to process the text read from the file
});
Sie können mit then oder done eine Funktion deklarieren, um die aus der Datei gelesenen buffer
-Daten (Typ IBuffer) zu erfassen und zu verarbeiten, nachdem die readBufferAsync-Methode abgeschlossen ist.
Beispiel: Das Beispiel zum Dateizugriff erfasst den buffer
und liest anhand eines dataReader-Objekts die Länge von buffer
:
Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
var dataReader = Windows.Storage.Streams.DataReader.fromBuffer(buffer);
var output = dataReader.readString(buffer.length);
});
Es ist natürlich nicht sehr hilfreich, die Länge von buffer
auf diese Weise zu lesen. Sie können jedoch ruhig kreativer sein, wenn Sie buffer
verarbeiten. Wenn Sie einen Blick auf die Methoden werfen, die in der dataReader-Klasse verfügbar sind, sehen Sie, welche Möglichkeiten es gibt.
Lesen von Text aus einer Datei mit einem Datenstrom
Öffnen Sie einen Datenstrom aus Ihrer Datei, indem Sie die storageFile.openAsync-Methode aufrufen. Ein Datenstrom des Dateiinhalts wird zurückgegeben, wenn der Vorgang zum Öffnen abgeschlossen ist.
Das Beispiel zum Dateizugriff veranschaulicht, wie ein Datenstrom zu einer Datei (
sampleFile
) durch einen Aufruf der storageFile.openAsync-Methode geöffnet wird:sampleFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(readFromStream);
Stellen Sie sicher, dass Sie eine Funktion deklarieren (wie
readFromStream
), um den Datenstrom zu erfassen (Typ IRandomAccessStream). Nach dem Abschluss der Methode können Sie dann aus der Datei lesen:function readFromStream(readStream) { // Add code to use the stream to read text from your file }
Führen Sie diese Schritte aus, um der
readFromStream
-Funktion Code hinzuzufügen. Mit dieser Funktion wird Text aus der Datei gelesen, nachdem die storageFile.openAsync-Methode abgeschlossen ist.Rufen Sie ein dataReader-Objekt ab, das aus dem
readStream
liest.Das Beispiel zum Dateizugriff veranschaulicht, wie Sie ein dataReader-Objekt abrufen:
var dataReader = new Windows.Storage.Streams.DataReader(readStream);
Lesen Sie den Text, indem Sie die Methoden dataReader.loadAsync und dataReader.readString aufrufen.
Das Beispiel zum Dateizugriff veranschaulicht, wie Sie Text lesen:
dataReader.loadAsync(readStream.size).done(function (numBytesLoaded) { var fileContent = dataReader.readString(numBytesLoaded); // Process text read from the file dataReader.close(); });
Sie können das Beispiel zum Dateizugriff herunterladen, um diese Codebeispiele im Kontext in den Funktionen anzuzeigen.
Zusammenfassung und nächste Schritte
Nun sollten Sie mit dem Lesen aus einer und dem Schreiben in eine Datei vertraut sein, wenn eine storageFile vorliegt, die die Datei darstellt.
Weitere Informationen dazu, wie Sie mit Bilddateien arbeiten, erhalten Sie in So wird's gemacht: Auswählen und Anzeigen von Bildern oder Decodieren von Bildern und dem Beispiel zum Speichern und Laden von Inhalten mithilfe eines Blobs.
Verwandte Themen
Zugreifen auf Daten in Dateien
Schnellstart: Dateizugriff mit Dateiauswahl
So wird's gemacht: Auswählen und Anzeigen von Bildern
Dateizugriff und Berechtigungen
Beispiel zum Speichern und Laden von Inhalten mit eines Blobs
Referenz
Windows.Storage.StorageFile class