Desenvolvimento - Mobile

Windows Phone: Criando e lendo arquivos de texto

Veja neste artigo como criar e ler arquivos de texto em aplicações Windows Phone, armazenando informações e as recuperando posteriormente.

por Joel Rodrigues



Criar, ler e modificar arquivos é uma tarefa bastante comum em praticamente todo tipo de aplicação, independente de plataforma. No Windows Phone, desde sua primeira versão, esse tipo de procedimento pode ser realizado com considerável facilidade.

Nesse sistema operacional, cada aplicação possui sua região de armazenamento de arquivos, e uma não pode acessar os arquivos da outra diretamente. Para acessar a região de armazenamento da aplicação, utiliza-se as classes do namespace system.IO.IsolatedStorage, tais como IsolatedStorageFile e IsolatedStorageFileStream, como será visto nos exemplos a seguir.

O procedimento, como já fora dito, é bastante simples e resume-se a: criar um objeto do tipo IsolatedStorageFile, que permite criar e acessar arquivos no Isolated Storage (região de armazenamento da aplicação); criar um IsolatedStorageFileStream para criar ou abrir o arquivo; utilizar as classes StreamReader e StreamWriter, para ler e escrever no arquivo aberto, respectivamente.

Interface do exemplo

Como o foco deste artigo não é construir uma aplicação com interface muito elaborada, vamos restringir a parte visual deste exemplo a um TextBox para exibir e editar o conteúdo de um arquivo de texto, e um botão para salvar o conteúdo digitado.

Então crie uma nova aplicação Windows Phone no Visual Studio e na MainPage.xaml, substitua o ContentPanel pelo conteúdo apresentado na Listagem 1.

Listagem 1: Código XAML da página

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="100"/>
    </Grid.RowDefinitions>
    <TextBox Name="txtTexto"/>
    <Button Name="btnSalvar" Content="Salvar" Grid.Row="1" Click="btnSalvar_Click"/>
</Grid>

A interface da nossa aplicação deve ficar igual ou semelhante ao que se vê na Figura 1.

Interface da aplicação

Figura 1: Interface da aplicação

Lendo e escrevendo em um arquivo

Para poder utilizar as classes já citadas, é necessário importar alguns namespaces, de acordo com a Listagem 2.

Listagem 2: Namespaces utilizados

using System.IO.IsolatedStorage;
using System.IO;

Em seguida, acesse o evento Loaded da página e crie para ele um event handler, conforme é exibido na Listagem 3. Quando a página for aberta, tentaremos abrir o arquivo, ler seu conteúdo e exibi-lo no TextBox. Caso o arquivo ainda não exista, ele será criado, pois passaremos o tipo FileMode.OpenOrCreate no construtor do stream. Em seguida, após lido seu conteúdo, é importante liberar o arquivo, fechando todas as conexões (acessos) que existam com ele.

Listagem 3: Evento de carregamento da página

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
    //Objeto que dá acesso ao sistema de armazenamento da aplicação
    IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
    //FileStream responsável por abrir o arquivo, ou criá-lo se não existir
    IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("MeuArquivo.txt", System.IO.FileMode.OpenOrCreate, armazenamento);
    //Leitor de streams que será usado para ler o conteúdo do arquivo
    StreamReader leitor = new StreamReader(arquivo);
    //Passando para o TextBox o conteúdo do arquivo
    txtTexto.Text = leitor.ReadToEnd();
    //Liberando o objeto de leitura do arquivo que foi aberto
    leitor.Close();
    //Liberando o arquivo que foi aberto
    arquivo.Close();
}

Feito isto, já podemos testar a aplicação, mas como é esperado, nenhum conteúdo será exibido no TextBox, pois o arquivo será criado na primeira vez que a aplicação for executada.

Prosseguindo, defina o event handler para o evento Click do botão Salvar conforme a Listagem 4. A leitura é bem semelhante à escrita, diferindo basicamente na classe utilizada para escrever o conteúdo, que nesse caso é a StreamWriter. Utilizando seu método Write, sobrescrevemos todo o conteúdo atual do arquivo, substituindo pelo que estiver contido no TextBox.

Note que no momento da escrita não foi necessário utilizar o FileMode.OpenOrCreate, mas sim apenas o Open. Considerando que se o arquivo não existir, ele será criado ao abrir a aplicação, ao clicar no botão ele já deverá existir, e poderá apenas ser aberto.

Listagem 4: Código do evento click do botão Salvar

private void btnSalvar_Click(object sender, RoutedEventArgs e)
{
    //Objeto que dá acesso ao sistema de armazenamento da aplicação
    IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
    //FileStream responsável por abrir o arquivo, ou criá-lo se não existir
    IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("MeuArquivo.txt", System.IO.FileMode.Open, armazenamento);
    //Objeto responsável por escrever no arquivo
    StreamWriter escritor = new StreamWriter(arquivo);
    //Escrevendo no arquivo o conteúdo do TextBox
    escritor.Write(txtTexto.Text);
    //Liberando o objeto de leitura do arquivo que foi aberto
    escritor.Close();
    //Liberando o arquivo que foi aberto
    arquivo.Close();
}

Feito isso, execute a aplicação, digite algum conteúdo no TextBox e pressione o botão Salvar. Em seguida, feche a aplicação e abra novamente. Você verá que o conteúdo digitado foi salvo e será carregado.

Caso a aplicação seja desinstalada, todos os seus arquivos são excluídos. Por isso, caso seja necessário persistir as informações mesmo se a aplicação for desinstalada, o ideal é que esses dados sejam armazenados em uma base externa, como no Microsoft Azure.

Na seção Links a seguir estão as referências à documentação oficial das classes IsolatedStorageFile e IsolatedStorageFileStream, é importante conhece-las melhor para poder explorar todos os recursos que encontram-se à disposição para realizar a manipulação de arquivos no Windows Phone.

Links

Joel Rodrigues

Joel Rodrigues - Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há quase 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (JQuery).