Gente me ajudem, so consigo gravar um registro

1 resposta
N

to fazendo uns trabalho de facul para gravar em arquivo .txt

mas so ta gravando um, depois ele dispara um erro

vo postar o codigo q grava:
agencia.setNumero(Integer.parseInt(fields[0].getText()));
					agencia.setNome(fields[1].getText());
					agencia.setCidade(fields[2].getText());

					gravar.gravarInt(agencia.getNumero());
					gravar.gravarString(agencia.getNome());
					gravar.gravarString(agencia.getCidade());

e tb vo colocar os metodos e atr. da classe Gravar

BufferedWriter out;

	public Gravar() throws IOException {
		
		File file = new File("arquivo.txt");
//		arq = new FileOutputStream("arquivo.txt");
		out = new BufferedWriter(new FileWriter(file, true));
		
		
	}

	public void gravarInt(int valor) throws IOException {
		out.write(valor);
		out.write(" ");
	}

	public void gravarString(String valor) throws IOException {
		out.write(valor);
		out.write(" ");
	}

	public void fechar() throws IOException {
		out.write("\n");
		out.flush();
		out.close();
	}

se alguem puder me ajudar a fazer gravar + de um registro agradeço, se principalmente falar como fazer e nao colocar o codigo pronto, desde ja agradeço

1 Resposta

R

Você está fechando o BufferedWriter em fechar(), onde você coloca o \n também. Quando tentar gravar de novo, seu Writer estará fechado, e um erro disparado.

Faça o seguinte.

  1. Obtenha todos os valores que precisa para gravar no .txt. Armazene-os numa Collection (Vector, ArrayList, Set, etc).

  2. Abra o BufferedWriter, e conseqüentemente, o arquivo.

  3. Percorra a Collection, jogando o valor dos atributos para o BufferedWriter. Não esqueça de colocar o indicador de nova linha. Sugiro utilizar out.writeln() no lugar de \n, por questões de portabilidade entre plataformas.

  4. Dê um flush no BufferedWriter, e feche…a gravação estará completa.

É mais eficiente gravar tudo de uma vez só ao invés de picado, pois você aproveita melhor o tempo de e/s.

Criado 13 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 1
Participantes 2