Idioma: HTML | XAML

Guia de início rápido: lendo e gravando arquivos (XAML)

Applies to Windows and Windows Phone

Leia e grave um arquivo usando um objeto StorageFile.

Pré-requisitos

Criando um arquivo

Os trechos de código desta seção ilustram como criar um arquivo (substituindo-o se ele já existir) na Biblioteca de Imagens. Um objeto StorageFile de nome sampleFile é usado em trechos de código subsequentes deste tópico para fazer referência ao arquivo aberto.


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


Observação  Para que você possa criar arquivos em Imagens, é necessário declarar o recurso no manifesto do seu aplicativo. Saiba mais sobre o acesso a arquivos e a funcionalidades em Acesso e permissões de arquivo e Declarações de funcionalidades do aplicativo.

Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Gravando em um arquivo

Estas etapas mostram como gravar em um arquivo se você tem um arquivo gravável e um StorageFile que o representa.

Gravando texto em um arquivo

Grave texto no seu arquivo chamando os métodos WriteTextAsync da classe FileIO.

O Exemplo de acesso a arquivos mostra como chamar WriteTextAsync(file, contents) para gravar um texto arbitrário no seu sampleFile da seguinte forma:


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

Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Gravando bytes em um arquivo usando um buffer

  1. Obtenha um buffer dos bytes que você deseja gravar no seu arquivo.

    Por exemplo, a Exemplo de acesso a arquivos chama ConvertStringToBinary para obter um buffer de bytes baseado em uma cadeia de caracteres arbitrária da seguinte forma:

    
    var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(
        "What fools these mortals be", Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
    
    
    
    
  2. Grave os bytes do seu buffer no seu arquivo chamando o método WriteBufferAsync da classe FileIO.

    A Exemplo de acesso a arquivos mostra como usar WriteBufferAsync para gravar bytes de um buffer em seu sampleFile da seguinte forma:

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

    Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Gravando texto em um arquivo usando um fluxo

  1. Abra o arquivo chamando o método StorageFile.OpenAsync. Ele retorna um fluxo de conteúdo do arquivo quando a operação de abertura é concluída.

    A Exemplo de acesso a arquivos mostra como abrir um fluxo para um arquivo (sampleFile) chamando o método StorageFile.OpenAsync da seguinte forma:

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

    Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

  2. Obtenha um fluxo de saída chamando o método GetOutputStreamAt de stream. Coloque isso em uma declaração de using para gerenciar o ciclo de vida do fluxo de saída.

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

    Use as etapas a seguir para adicionar código dentro da declaração de using para gravar no fluxo de saída.

    1. Grave texto no outputStream criando um novo objeto DataWriter e chamando o método DataWriter.WriteString.

      
          DataWriter dataWriter = new DataWriter(outputStream);
          dataWriter.WriteString("The DataWriter provides method to write to various types, such as DataTimeOffset.");
      
      
      
    2. Salve o texto no seu arquivo e feche o fluxo chamando os métodos writer.StoreAsync e outputStream.FlushAsync.

      A Exemplo de acesso a arquivos mostra como salvar o texto no seu arquivo e fechar o fluxo da seguinte forma:

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

      Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Você baixar a Exemplo de acesso a arquivos para ver esses exemplos de código contextualizados dentro de métodos.

Lendo um arquivo

Estas etapas mostram como ler um arquivo se você tem um arquivo gravável e um StorageFile que o representa. Você pode obter um StorageFile que representa arquivos legíveis por meio do método StorageFolder.GetFileAsync.


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


Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Lendo texto de um arquivo

Leia texto do seu arquivo chamando os métodos ReadTextAsync da classe FileIO.

O Exemplo de acesso a arquivos lhe mostra como ler texto de um arquivo chamando ReadTextAsync(file) para ler do seu sampleFile da seguinte forma:



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


Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Lendo bytes de um arquivo usando um buffer

Leia os bytes do seu buffer no seu arquivo chamando o método ReadBufferAsync da classe FileIO.

O Exemplo de acesso a arquivos mostra como ler bytes para um buffer de um arquivo chamando ReadBufferAsync da seguinte forma:


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

Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Em seguida, use o objeto DataReader para ler o tamanho do buffer e ler o conteúdo do buffer.



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


Lendo texto de um arquivo usando um fluxo

  1. Abra um fluxo para o seu arquivo chamando o método StorageFile.OpenAsync. Ele retorna um fluxo de conteúdo do arquivo quando a operação de abertura é concluída.

    O Exemplo de acesso a arquivos mostra como abrir um fluxo para um arquivo (sampleFile) chamando o método StorageFile.OpenAsync da seguinte forma:

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

    Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

  2. Obtenha o tamanho do fluxo para usar mais tarde.

    
    var size = stream.Size;
    
    
  3. Obtenha um fluxo de entrada chamando o método GetInputStreamAt de stream. Coloque isso em uma declaração de using para gerenciar o ciclo de vida do fluxo de entrada. Especifique 0 ao chamar GetInputStreamAt para definir a posição do inputStream no início do fluxo, conforme mostrado no exemplo.

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

    Use as etapas a seguir para adicionar código dentro da declaração de using para ler o fluxo de entrada.

    1. Obtenha um objeto DataReader passando o inputStream ao construtor.

      O Exemplo de acesso a arquivos mostra como criar um DataReader da seguinte forma:

      
      DataReader dataReader = new DataReader(inputStream);
      
      
    2. Leia o texto chamando os métodos DataReader.LoadAsync e DataReader.ReadString.

      O Exemplo de acesso a arquivos lhe mostra como ler texto e garantir que o stream não está vazio da seguinte forma:

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

      Observação  Lembre-se de colocar a palavra-chave async na declaração de método de qualquer método no qual você usar o operador await. Para obter mais informações, consulte Guia de início rápido: usando o operador de espera para programação assíncrona.

Você baixar a Exemplo de acesso a arquivos para ver esses exemplos de código contextualizados dentro de métodos.

Resumo e próximas etapas

Agora, você deve compreender como ler e gravar em um arquivo se você tem um StorageFile que representa o arquivo.

Para saber sobre como trabalhar com arquivos de imagem, veja Guia de Início Rápido: Imagem e ImageBrush, Guia de Início Rápido: Geração de Imagens e o Exemplo de imagem XAML.

Tópicos relacionados

Acessando dados e arquivos
Guia de início rápido: acessando arquivos com seletores de arquivos
Diretrizes e lista de verificação dos seletores de arquivos
Acesso e permissões de arquivo
Exemplo de acesso a arquivos
Exemplo de imagem XAML
Referência
Windows.Storage.StorageFile class
Windows.Storage.Streams.DataReader class
Windows.Storage.Streams.DataWriter class

 

 

Mostrar:
© 2014 Microsoft