Cursos / Informática para Internet / Dispositivos Móveis / Aula

arrow_back Aula 10 - Resources, Arquivos e Sharedpreferences

Arquivos

Muitas vezes, durante o desenvolvimento de uma aplicação, verificamos a necessidade de armazenar certas informações no aparelho para que possamos utilizá-las mais à frente. Uma das formas de armazenamento existente é a de armazenamento direto em arquivos, e será a primeira que iremos estudar.

Essa técnica nos permite ter grande controle sobre o armazenamento das informações, mas a sua manipulação pode ser muito trabalhosa. Por padrão, toda aplicação tem um espaço próprio disponibilizado pelo aparelho, e é nesse espaço que são armazenados os arquivos. Esse espaço é exclusivo de sua aplicação e, portanto, nenhum outro aplicativo poderá ler ou modificar os arquivos lá colocados.

O uso do armazenamento interno segue a seguinte ordem: primeiro devemos recuperar um objeto do tipo FileOutputStream, e a partir daí podemos usar todas as classes e métodos presentes nas APIs de Java para Entrada/Saída (java.io.* e java.nio.*). Após recuperar esse objeto, podemos escrever no arquivo usando o método write e, por fim, fechamos o input através do método close. Vamos observar a Listagem 2 para melhor entender o uso de arquivos.

Listagem 2 - Escrita em arquivo

Dessa forma, será criado um arquivo chamado arquivo_hello, contendo a representação em bytes da string "hello world!".

É possível, ainda, realizar a abertura e escrita do arquivo de outra forma. Da forma mostrada anteriormente, escrevemos no arquivo a representação em bytes da String desejada, mas e se quiséssemos escrever a String em si no arquivo? Uma das abordagens possíveis é a mostrada a seguir, na Listagem 3.

Listagem 3 - Outra abordagem para escrita em arquivo

Conforme podemos observar, a criação de um arquivo mostrada na Listagem 3 segue um outro modelo. Primeiramente, definimos uma variável String chamada nomeArquivo, que irá armazenar o nome do arquivo que iremos criar. Logo após, é criado um objeto do tipo File a partir do nome do arquivo, já passado com o caminho padrão disponibilizado pelo Android para a aplicação (getFilesDir()). Com o arquivo criado, basta criarmos um objeto do tipo BufferedWriter para poder escrever nossa String desejada. Após finalizar a escrita, basta chamar os métodos flush e close do BufferedWriter para que as mudanças realizadas sejam escritas no arquivo. Fazendo isso, diferentemente do mostrado através da Listagem 2, os dados armazenados no arquivo serão exatamente os escritos, sem passar por qualquer tipo de transformação em bytes.

Para fazer a leitura dos dados armazenados usando uma das formas mostradas, usamos um processo bem simples, descrito na Listagem 4 .

Listagem 4 - Leitura de arquivos

O processo mostrado acima se inicia com a criação de um objeto do tipo BufferedReader, que será responsável pelo acesso ao conteúdo do arquivo. Para instanciá-lo, utilizamos o nome do arquivo armazenado, de forma que seu objeto de trabalho seja o arquivo passado. Logo após, tentamos ler o conteúdo do arquivo, linha a linha, utilizando a estrutura de repetição while. Dentro do laço, o conteúdo lido (uma linha) é armazenado em um objeto do tipo StringBuffer. Ao final, imprimimos o conteúdo encontrado. Devemos lembrar que, após finalizarmos nosso trabalho com o arquivo, devemos fechar a conexão existente no objeto BufferedReader, e assim o fizemos na implementação do finally.

Versão 5.3 - Todos os Direitos reservados