Gente me ajudem, so consigo gravar um registro

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:

[code]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());[/code]

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

[code]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();
}

[/code]

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

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.