Idioma: HTML | XAML

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

Applies to Windows and Windows Phone

Leer y escribir un archivo con un objeto StorageFile.

Requisitos previos

Creación de un archivo

Los fragmentos de código de esta sección ilustran cómo crear un archivo (reemplazándolo si ya existe) en la biblioteca Imágenes. En los fragmentos de código siguientes de este tema se usa un objeto StorageFile denominado sampleFile para hacer referencia al archivo abierto.


// Create sample file; replace if exists.
StorageFolder folder = KnownFolders.PicturesLibrary;
StorageFile sampleFile = await folder.CreateFileAsync("sample.txt", CreationCollisionOption.ReplaceExisting);


Nota  Antes de crear archivos en Imágenes, debes declarar las funcionalidades en el manifiesto de la aplicación. Obtén más información sobre las funcionalidades y el acceso a archivos en Acceso a archivos y permisos de archivo y Declaraciones de funcionalidades de la aplicación.

Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

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:


await Windows.Storage.FileIO.WriteTextAsync(sampleFile, "Swift as a shadow");

Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

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.Utf8);
    
    
    
    
  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:

    
    await Windows.Storage.FileIO.WriteBufferAsync(sampleFile, buffer);
    
    
    

    Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

Escritura de texto en un archivo con una secuencia

  1. Para abrir el archivo, haz una llamada 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 para un archivo (sampleFile) llamando al método StorageFile.OpenAsync, de esta manera:

    
    var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
    
    

    Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

  2. Obtén una secuencia de salida llamando al método GetOutputStreamAt desde la stream. Coloca esto en una instrucción using para administrar la duración de la secuencia de salida.

    
    using (var outputStream = stream.GetOutputStreamAt(0))
    {
                    
        // Add code to use the stream to write to your file
     
    }
    
    
    

    Usa los siguientes pasos para agregar código dentro de la instrucción using para escribir en la secuencia de salida.

    1. Escribe texto en outputStream creando un nuevo objeto DataWriter y llamando al método DataWriter.WriteString.

      
          DataWriter dataWriter = new DataWriter(outputStream);
          dataWriter.WriteString("The DataWriter provides method to write to various types, such as DataTimeOffset.");
      
      
      
    2. Guarda el texto en tu archivo y cierra la secuencia llamando a los métodos writer.StoreAsync y outputStream.FlushAsync.

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

      
          await dataWriter.StoreAsync();
          await outputStream.FlushAsync(); 
      
      
      

      Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

Puedes descargar la muestra de acceso a archivos para ver estos ejemplos de código en contexto dentro de los métodos.

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. Puedes obtener un StorageFile que represente archivos legibles mediante el método StorageFolder.GetFileAsync.


StorageFolder storageFolder = KnownFolders.PicturesLibrary;
StorageFile sampleFile = await storageFolder.GetFileAsync("sample.txt");


Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

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:



string text = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);


Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

Lectura de bytes de un archivo con un búfer

Lee bytes del búfer en el archivo llamando 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:


var buffer = await Windows.Storage.FileIO.ReadBufferAsync(sampleFile);

Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

A continuación, usa un objeto DataReader para leer la longitud del buffer y leer el contenido del búfer.



DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(buffer);
string text = dataReader.ReadString(buffer.Length);


Lectura de texto desde un archivo con una secuencia

  1. Abre una secuencia para el 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:

    
    var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
    
    

    Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

  2. Obtén el tamaño de la secuencia para usarlo más adelante.

    
    var size = stream.Size;
    
    
  3. Obtén una secuencia de salida llamando al método GetInputStreamAt desde stream. Coloca esto en una instrucción using para administrar la duración de la secuencia de entrada. Especifica 0 cuando llames a GetInputStreamAt para establecer la posición de inputStream al principio de la secuencia, como se muestra en el ejemplo.

    
    using (var inputStream = stream.GetInputStreamAt(0))
    {
        // Add code to use the stream to read your file
        
    }
    
    
    

    Usa los siguientes pasos para agregar código dentro de la instrucción using para leer la secuencia de entrada.

    1. Obtén un objeto DataReader al pasar inputStream al constructor.

      La muestra de acceso a archivos indica cómo crear un DataReader, de esta manera:

      
      DataReader dataReader = new DataReader(inputStream);
      
      
    2. Lee el texto llamando a los métodos DataReader.LoadAsync y DataReader.ReadString.

      La muestra de acceso a archivos indica cómo leer texto y asegurarse de que stream no esté vacío, de esta manera:

      
      uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
      string text = dataReader.ReadString(numBytesLoaded);
      
      
      

      Nota  Recuerda poner la palabra clave async en la declaración del método de cualquier método en el que uses el operador await. Para obtener más información, consulta Inicio rápido: usar el operador await para la programación asincrónica.

Puedes descargar la muestra de acceso a archivos para ver estos ejemplos de código en contexto dentro de los métodos.

Resumen y pasos siguientes

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

Para aprender cómo trabajar con archivos de imágenes, consulta Inicio rápido: Image e ImageBrush, Inicio rápido: imágenes, y la muestra de imagen XAML.

Temas relacionados

Obtener acceso a datos y archivos
Inicio rápido: Acceso a archivos mediante selectores de archivos
Directrices y lista de comprobación de selectores de archivos
Acceso a archivos y permisos de archivo
Muestra de acceso de archivos
Muestra de imagen XAML
Referencia
Windows.Storage.StorageFile class
Windows.Storage.Streams.DataReader class
Windows.Storage.Streams.DataWriter class

 

 

Mostrar:
© 2014 Microsoft