Como criar e editar arquivos de texto de acesso sequencial em Java
Como criar e editar arquivos de texto de acesso sequencial em Java
Um arquivo de acesso sequencial é um arquivo no qual os dados (registros) são armazenados em ordem, por um campo registro-chave. Vamos criar nesta lição um arquivo de texto, incluindo escrita, leitura e edição de seu conteúdo.
Criar classe para manipular arquivo de texto
Para nosso exemplo vamos criar a classe CriarArquivoTexto, que irá usar um objeto Formatter para gerar Strings formatadas, da mesma forma que o método System.out.printf trabalha. E com ele criaremos ou abriremos um arquivo de texto que nomearemos como “arquivo.txt“.
Se o arquivo não existir, ele será criado; caso o arquivo já exista no sistema, ele será truncado, ou seja, todo o seu conteúdo será apagado e substituído pelo novo conteúdo digitado.
Exemplo
Vejamos um exemplo de criação e edição de arquivo de texto em Java, adaptado de Deitel – Java How to Program, 10ª edição:
package criarArquivoTexto; import java.io.FileNotFoundException; import java.lang.SecurityException; import java.util.Formatter; import java.util.FormatterClosedException; import java.util.NoSuchElementException; import java.util.Scanner; public class CriarArquivoTexto { private static Formatter saida; // envia texto para um arquivo public static void main(String[] args) { abrirArquivo(); adicionarDados(); fecharArquivo(); } // Método para abrir (ou criar) o arquivo arquivo.txt public static void abrirArquivo() { try { saida = new Formatter("arquivo.txt"); // Abrir o arquivo } catch (SecurityException securityException) { System.err.println("Não é possível escrever no arquivo. Finalizando."); System.exit(1); // terminar o programa } catch (FileNotFoundException fileNotFoundException) { System.err.println("Erro ao abrir o arquivo. Finalizando."); System.exit(1); // Finalizar o programa } } // Método para adicionar registros ao arquivo public static void adicionarDados() { Scanner entrada = new Scanner(System.in); System.out.printf("%s%n","Entre com o código do produto e nome do item para cadastro:"); System.out.printf("%s%n","Para salvar os dados inseridos pressione Ctrl+Z:"); while (entrada.hasNext()) { // iterar até que seja encontrado o marcador de fim-de-arquivo try { // Gravar novo registro no arquivo; não verifica se entrada é válida. saida.format("%d %s %n", entrada.nextInt(),entrada.next()); } catch (FormatterClosedException formatterClosedException) { System.err.println("Erro ao escrever no arquivo. Finalizando."); break; } catch (NoSuchElementException elementException) { System.err.println("Entrada inválida. Tente novamente."); entrada.nextLine(); // Descartar a entrada para que o usuário possa tentar de novo } System.out.print("Entre com o próximo código e item:\n"); } // Fim do laço while } // Fim do método adicionarDados // Método para fechar o arquivo public static void fecharArquivo() { if (saida != null) saida.close(); } } // Fim da classe CriarArquivoTexto
Note que para sinalizar o final de arquivo e sair do programa, usamos a combinação de teclas Ctrl+Z. Esse é o marcador EOF padrão no Windows. Se estiver usando outro sistema operacional, o marcador poderá ser diferente:
Sistema Operacional | Marcador EOF (Combinação de teclas) |
Microsoft Windows | Ctrl + Z |
Unix / Linux / Mac OS X | <Enter> Ctrl + d |
Após a execução do programa, podemos entrar na pasta do projeto e lá encontraremos o arquivo gerado. Se o abrirmos usando o editor de texto padrão do sistema, veremos o conteúdo que foi fornecido à aplicação anteriormente:
Arquivo criado e dados salvos com sucesso! Na próxima lição vamos aprender a ler os dados armazenados em um arquivo de texto sequencial usando Java.
Escreva um comentário