Leitura e Gravação de Arquivo de Texto Utilizando Java

Muitas vezes, encontramos a situação em que queremos armazenar dados de algumas aplicações em uma memoria secundaria, para manipular posteriormente, para isso é necessária a utilização do pacote java.io. Os dados podem ser armazenados e recuperados pelo pacote java.io por intermédio de um sistema de comunicação denominado controle de fluxo (Stream), permite a manipulação de diversos formatos de arquivos como: txt, dat, gif, etc.

Para armazenamento e recuperação de um arquivo de texto, existem diversas class que podem ser utilizadas entre elas:

  • BufferedReader: para leitura do arquivo.

  • PrintWriter: para gravação.

Crie um novo projeto e uma class com o nome “CadastroComArquivoDeTexto”, utilize o código abaixo para implementar a seguinte aplicação:

Captura de tela de 2014-02-10 18:46:33

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 * @author Francisco de Assis de Souza Rodrigues. 10/02/2014
 *         www.clubedosgeeks.com.br
 * 
 *         Referência Bibliografica: Livro Java7 Ensino Didático (Sergio
 *         Furgeri).
 */

public class CadastroComArquivoDeTexto extends JFrame {

	private static final long serialVersionUID = 1L;
	private JLabel labelCodigo, labelNome, labelEmail;
	private JButton btnAbrir, btnGravar, btnLimpar;
	private JTextField tfCodigo, tfNome, tfEmail;

	public static void main(String args[]) {
		// Instâcia do Objeto da Class JFrame.
		JFrame frame = new CadastroComArquivoDeTexto();

		// Permite Feichar a JFrame.
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Define JFrame Visivel.
		frame.setVisible(true);
	}

	// Construtor da Class.
	public CadastroComArquivoDeTexto() {
		// Chamada dos Métodos.
		inicializarComponentes();
		definirEventos();
	}

	/**
	 * Método inicializarComponentes, contem todos os componetes da JFrame.
	 */
	public void inicializarComponentes() {
		// Define Título da JFrame.
		setTitle("Cadastro usando Arquivo de Texto");

		//
		setBounds(250, 50, 340, 160);

		//
		setBackground(new Color(150, 150, 150));

		// Instância dos objetos JLabel, JButton, JTextField.
		labelCodigo = new JLabel("Código");
		labelNome = new JLabel("Nome");
		labelEmail = new JLabel("Email");

		btnAbrir = new JButton("Abrir");
		btnGravar = new JButton("Gravar");
		btnLimpar = new JButton("Limpar");

		tfCodigo = new JTextField();
		tfEmail = new JTextField();
		tfNome = new JTextField();

		//
		setLayout(null);

		// Coordenadas das posições dos Componentes JLabel, JButton, JTextField.
		labelCodigo.setBounds(10, 15, 40, 20);
		labelNome.setBounds(10, 40, 45, 20);
		labelEmail.setBounds(10, 65, 45, 20);

		btnAbrir.setBounds(10, 100, 75, 20);
		btnGravar.setBounds(95, 100, 75, 20);
		btnLimpar.setBounds(180, 100, 75, 20);

		tfCodigo.setBounds(60, 15, 55, 20);
		tfNome.setBounds(60, 40, 255, 20);
		tfEmail.setBounds(60, 65, 255, 20);

		// Adiciona Componentes JLabel, JButton, JTextField, a JFrame.
		add(labelCodigo);
		add(labelNome);
		add(labelEmail);

		add(btnAbrir);
		add(btnGravar);
		add(btnLimpar);

		add(tfCodigo);
		add(tfEmail);
		add(tfNome);
	}

	/**
	 * Define Eventos que será executado por cada componete JButton.
	 */
	public void definirEventos() {
		// Evento do Botão Limpar.
		btnLimpar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// Limpa todos os Campos.
				tfCodigo.setText("");
				tfNome.setText("");
				tfEmail.setText("");
			}
		});

		// Evento do Botão Gravar.
		btnGravar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Condição, verifica se os campo estão vazios.
				if (tfCodigo.getText().equals("")) {
					// Exibe caixa de Dialogo.
					JOptionPane.showMessageDialog(null,
							"O Código não pode está vazio!");

					// Fornece o foco ao cursor da caixa de Texto
					// correspondente.
					tfCodigo.requestFocus();

				} else if (tfNome.getText().equals("")) {
					// Exibe caixa de Dialogo.
					JOptionPane.showMessageDialog(null,
							"O Nome não pode está vazio!");

					// Fornece o foco ao cursor da caixa de Texto
					// correspondente.
					tfNome.requestFocus();

				} else if (tfEmail.getText().equals("")) {
					// Exibe caixa de Dialogo.
					JOptionPane.showMessageDialog(null, "");

					// Fornece o foco ao cursor da caixa de Texto
					// correspondente.
					tfEmail.requestFocus();

				} else {
					// Tratamento de Erros.
					try {
						// Instância de um Objeto da Class Java(PrintWriter
						// "para Gravação do Arquivo").
						PrintWriter out = new PrintWriter(tfCodigo.getText()
								+ ".txt");// Define o extensão do arquivo que
											// deseja criar.

						// Captura o Texto dos JTextField.
						out.println(tfCodigo.getText());
						out.println(tfNome.getText());
						out.println(tfEmail.getText());

						// Fecha Conexão.
						out.close();

						// Exibe caixa de Dialogo.
						JOptionPane.showMessageDialog(null,
								"Arquivo Gravado com Sucesso!");

					} catch (IOException Erro) {
						JOptionPane.showMessageDialog(null,
								"Erro ao Gravar no Arquivo" + Erro);
					}
				}
			}
		});

		// Evento do Botão Abrir.
		btnAbrir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// Tratamento de Erros
				try {
					// Solicita ao usuário que informe qual o arquivo deseja
					// abrir.
					String arquivo = JOptionPane.showInputDialog(null,
							"Infome o Código a abrir:");

					// Instância de um Objeto da Class java(BufferedReader
					// "Para Leitura do Arquivo"), que Instância um Objeto da
					// Class java(FileReader) referenciando o arquivo a ser
					// aberto.
					BufferedReader br = new BufferedReader(new FileReader(
							arquivo + ".txt"));

					// Ler o conteúdo do arquivo e exibe nos JTextField.
					tfCodigo.setText(br.readLine());
					tfNome.setText(br.readLine());
					tfEmail.setText(br.readLine());

				} catch (IOException Erro) {

				}
			}
		});

	}
}

 

Obs.: O arquivo fica salvo dentro da pasta do projeto.

Até a próxima.

Francisco de Assis

Servo de DEUS, Mestrando em Ciências da Computação (UFPE) Pós-Graduado em Docência do Ensino Superior (IDJ/UVA), Graduando em Automação Industrial (IFCE), Graduado em Analise e Desenvolvimento de Sistemas (UNILEÃO), casado com a mulher mais maravilhosa, Tamires Alencar e amante Python, Java, Games, Eletrônica, Robótica, Violão, Aviação...

6 thoughts on “Leitura e Gravação de Arquivo de Texto Utilizando Java

  1. Olá, também estou com essa duvida. Quando gero o cadastro ele pega o texto que está no campo Nome e nomeia no “.txt” ficando por exemplo “Fulano da Silva.txt” e estou com a dificuldade em gravar tudo em um único arquivo chamado “arquivo.txt” para evitar que seja criado um .txt toda vez que for feito um cadastro ao exemplo de se eu criar um cadastro com nome Fulano e outro Ciclano haverá dois arquivos do tipo texto, um com o nome de Fulano.txt e outro com Ciclano.txt
    Se puder me ajudar com essa duvida.

    1. Luiz guilherme segue ai como eu fiz
      String caminho = “C:\\Users\\Joyce Fidelis\\Documents\\NetBeansProjects\\Teste\\src\\Arquivo\\Produto.txt”;
      try{

      FileWriter arq = new FileWriter(caminho,true);
      BufferedWriter escArq = new BufferedWriter(arq);
      escArq.append(“Código: “+ jtfCod.getText());
      escArq.newLine();
      escArq.append(“Descrição: “+ jtfDesc.getText());
      escArq.newLine();
      escArq.append(“Preço: “+ jtfPreco.getText());
      JOptionPane.showMessageDialog(null, “PRODUTO CADASTRADO COM SUCESSO”);
      escArq.newLine();
      escArq.append(“*”);
      escArq.newLine();
      escArq.close();
      arq.close();

      }catch (IOException ex){
      System.err.printf(“Erro na abertura de arquivo”, ex.getMessage());
      }
      }
      }
      });

  2. Olá, a Paz! tenho um trabalho para fazer mas tá difícil, tô começando na área de TI poderia me ajudar com isso ? Desde já agradeço.

    Utilizando arquivos para gerenciar os dados, implementar um programa em java para fazer as
    operações de:
    · Cadastro
    · Exclusão
    · Busca
    A classe a ser gerenciada é PessoaFisica que possui os seguintes atributos: Nome, CPF e
    Endereço.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77

Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77