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

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

  1. 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['']
    );
    
  2. 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

  1. Ö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 die transaction 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
    }
    
  2. 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.

    1. 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");
      
    2. 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

  1. Ö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
    }
    
  2. 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.

    1. 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);
      
    2. 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

Decodieren von Bildern

Dateizugriff und Berechtigungen

Beispiel zum Dateizugriff

Beispiel zum Speichern und Laden von Inhalten mit eines Blobs

Referenz

Windows.Storage.StorageFile class

Windows.Storage.Streams.DataReader class

Windows.Storage.Streams.DataWriter class