Bóson Treinamentos em Ciência e Tecnologia

Como criar e editar arquivos de texto de acesso sequencial em Java

criar e editar arquivos de texto 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.

 

Sair da versão mobile