Share via


Inicio rápido: lectura y escritura de archivos (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Leer y escribir un archivo con un objeto StorageFile.

Requisitos previos

Archivo usado en los ejemplos

Todo el código de estos ejemplos se toma de la muestra de acceso a archivos y depende de la variable global sampleFile de la muestra. Esta variable representa el archivo (sample.dat) en el que se escribe y desde el cual se lee en los ejemplos.

La muestra de acceso a archivos crea el archivo sample.dat y almacena el objeto storageFile que se devuelve, de esta manera:

Windows.Storage.ApplicationData.current.localFolder.createFileAsync("sample.dat",
    Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) {
        sampleFile = file;
    });

Nota  Antes de crear archivos en bibliotecas, debes declarar las capacidades necesarias en el manifiesto de la aplicación. Para obtener más información sobre las capacidades y el acceso a archivos, consulta Acceso a archivos y permisos de archivo y Acceso a recursos de usuario con Windows en tiempo de ejecución.

 

Escritura en un archivo

En estos pasos se muestra cómo escribir en un archivo si tienes un archivo editable y un objeto storageFile que lo representa.

Escritura de texto en un archivo

Escribe texto en el archivo llamando a los métodos writeTextAsync de la clase fileIO.

La muestra de acceso a archivos indica cómo llamar a writeTextAsync(file, contents) para escribir texto arbitrario en su objeto sampleFile, de esta manera:

Windows.Storage.FileIO.writeTextAsync(sampleFile, "Swift as a shadow").then(function () {
    // Add code to do something after the text is written to the file
});

Aunque los métodos writeTextAsync no tienen un valor devuelto, igualmente puedes usar then o done para declarar una función y realizar tareas adicionales después de que se escriba el texto en el archivo, como se muestra en el ejemplo.

Escritura de bytes en un archivo con un búfer

  1. Obtén un búfer de los bytes que quieres escribir en el archivo.

    Por ejemplo, la muestra de acceso a archivos llama a convertStringToBinary para obtener un búfer de bytes en función de una cadena arbitraria, de esta manera:

    var buffer = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(
        'What fools these mortals be', Windows.Security.Cryptography.BinaryStringEncoding['']
    );
    
  2. Escribe los bytes del búfer en el archivo llamando al método writeBufferAsync de la clase fileIO.

    La muestra de acceso a archivos indica cómo usar writeBufferAsync para escribir bytes de un búfer en su objeto sampleFile, de esta manera:

    Windows.Storage.FileIO.writeBufferAsync(sampleFile, buffer).then(function () {
        // Add code to do something after the text is written to the file
    });
    

    Aunque writeBufferAsync no tiene un valor devuelto, igualmente puedes usar then o done para declarar una función y realizar tareas adicionales después de que se escriba el texto en el archivo, como se muestra en el ejemplo.

Escritura de texto en un archivo con una secuencia de transacción

  1. Abre una secuencia al archivo llamando al método storageFile.openTransactedWriteAsync. Cuando se complete la operación de apertura, devolverá una secuencia del contenido del archivo.

    La muestra de acceso a archivos indica cómo abrir una secuencia en un archivo (sampleFile) llamando al método storageFile.openTransactedWriteAsync, de esta manera:

    sampleFile.openTransactedWriteAsync().then(writeToStream);
    

    Asegúrate de declarar una función (como writeToStream) para capturar transaction (tipo StorageStreamTransaction), de modo que puedas escribir en el archivo una vez completado el método, de esta manera:

    function writeToStream(transaction) {
        // Add code to use the stream to write to your file
    }
    
  2. Usa estos pasos para agregar código a la función writeToStream que escribirá texto en el archivo después de que se complete el método storageFile.openAsync.

    1. Usa transaction para escribir texto en una secuencia; para ello, crea un nuevo objeto dataWriter y llama al método dataWriter.writeString.

      La muestra de acceso a archivos indica cómo escribir texto en la secuencia, de esta manera:

      var dataWriter = new Windows.Storage.Streams.DataWriter(transaction.stream);
      dataWriter.writeString("Swift as a shadow");
      
    2. Guarda el texto en tu archivo y cierra la secuencia, llamando a los métodos dataWriter.storeAsync y transaction.commitAsync.

      La muestra de acceso a archivos indica cómo guardar el texto en el archivo y cerrar la secuencia, de esta manera:

      dataWriter.storeAsync().then(function () {
          transaction.commitAsync().done(function () {
              // Text in stream has been saved to the file
              transaction.close();
          });
      });
      

Puedes descargar la muestra de acceso a archivos para ver estos ejemplos de código en contexto dentro de las funciones.

Lectura desde un archivo

En estos pasos se muestra cómo leer desde un archivo si tienes un archivo legible y un objeto storageFile que lo representa.

Lectura de texto desde un archivo

Lee texto del archivo llamando a los métodos readTextAsync de la clase fileIO.

La muestra de acceso a archivos indica cómo leer el texto de un archivo llamando a readTextAsync(file) para leer de su sampleFile, de esta manera:

Windows.Storage.FileIO.readTextAsync(sampleFile).then(function (contents) {
    // Add code to process the text read from the file
});

Puedes usar then o done para declarar una función para capturar y procesar el texto que se leyó del archivo. Después de que se complete el método readTextAsync, el texto se pasa a esta función como un objeto String (contents en el ejemplo).

Lectura de bytes de un archivo con un búfer

Lee bytes del archivo en el búfer mediante una llamada al método readBufferAsync de la clase fileIO.

La muestra de acceso a archivos indica cómo leer bytes a un búfer desde un archivo llamando a readBufferAsync, de esta manera:

Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
    // Add code to process the text read from the file
});

Puedes usar then o done para declarar una función para capturar y procesar los datos del buffer (tipo IBuffer) después de que se complete el método readBufferAsync.

Por ejemplo, la muestra de acceso a archivos captura el buffer y usa un objeto dataReader para leer la longitud del buffer, de esta manera:

Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
    var dataReader = Windows.Storage.Streams.DataReader.fromBuffer(buffer);
    var output = dataReader.readString(buffer.length);
});

Por supuesto, leer la longitud del buffer de esta manera no es particularmente útil, pero puedes usar más creatividad en la manera de procesar el buffer. Puedes observar los métodos disponibles de la clase dataReader para tener una idea de lo que puedes hacer.

Lectura de texto desde un archivo con una secuencia

  1. Abre una secuencia del archivo llamando al método storageFile.openAsync. Cuando se complete la operación de apertura, devolverá una secuencia del contenido del archivo.

    La muestra de acceso a archivos indica cómo abrir una secuencia en un archivo (sampleFile) llamando al método storageFile.openAsync, de esta manera:

    sampleFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(readFromStream);
    

    Asegúrate de declarar una función (como readFromStream) para capturar la secuencia (tipo IRandomAccessStream) para poder leer de ella después de que se complete el método, de esta manera:

    function readFromStream(readStream) {
        // Add code to use the stream to read text from your file
    }
    
  2. Usa estos pasos para agregar código a la función readFromStream que leerá texto del archivo después de que se complete el método storageFile.openAsync.

    1. Obtén un objeto dataReader para leer desde readStream.

      La muestra de acceso a archivos indica cómo obtener un objeto dataReader, de esta manera:

      var dataReader = new Windows.Storage.Streams.DataReader(readStream);
      
    2. Lee el texto mediante llamadas a los métodos dataReader.loadAsync y dataReader.readString.

      La muestra de acceso a archivos indica cómo leer texto, de esta manera:

      
      dataReader.loadAsync(readStream.size).done(function (numBytesLoaded) {
          var fileContent = dataReader.readString(numBytesLoaded);
          // Process text read from the file
          dataReader.close();
      });
      

Puedes descargar la muestra de acceso a archivos para ver estos ejemplos de código en contexto dentro de las funciones.

Resumen y siguientes pasos

Ahora debes comprender cómo leer un archivo y escribir en él si tienes un objeto storageFile que representa el archivo.

Para aprender a trabajar con archivos de imágenes, consulta Cómo seleccionar y mostrar una imagen o Cómo decodificar una imagen y la Muestra del uso de un blob para guardar y cargar contenido.

Temas relacionados

Acceso a datos desde archivos

Inicio rápido: acceso a archivos mediante selectores de archivos

Cómo seleccionar y mostrar una imagen

Cómo descodificar una imagen

Acceso a archivos y permisos de archivo

Muestra de acceso de archivos

Muestra del uso de un blob para guardar y cargar contenido

Referencia

Windows.Storage.StorageFile class

Windows.Storage.Streams.DataReader class

Windows.Storage.Streams.DataWriter class