Arquivo txt

Oi pessoal,

Estou fazendo um projeto para a faculdade, uma feira. É necessário cadastrar produtos (case 1), no case 2 é a venda e lá o usuario informará o nome do cliente os produtos comprados. O comprovante terá de ser em txt.

entao coloquei esse código

try { // Create file FileWriter fw = new FileWriter("Comprovante de pagamento.txt"); BufferedWriter out = new BufferedWriter(fw); out.write("Nome do Cliente: " + nome +" Produto Comprado: " + busca + " Preço do Produto: " + PP.getPreco() + " Quantos foram comprados: " + quantos + " Total a pagar: " + preco); out.newLine(); out.close(); } catch (Exception e){//Catch exception if any System.err.println("Error: " + e.getMessage()); }

Da certo, aparece o nome do cliente e tals, só que só uma vez.
Esse código está dentro de um laço e conforme eu coloque outro cliente só aparece o ultimo cliente q escrevi.
Ele sobreescreve
Alguem sabe como eu faço no código para ele gravar todos os clientes q eu quiser colocar no vetor???

Se todo este código esta dentro de um laço, então a cada iteração ele está criando e destruindo o seus objetos FileWriter e BufferedWriter.

Se não me engano a declaração das variáveis out e fw não precisam estar dentro do try catch.

Então você pode tirar esta declaração do try/catch e também dar um out.open() dentro do laço.

Não tenho certeza pois não tenho com o testar no momento, mas não deve fugir disso não.

dá uma olhada aqui: http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileWriter.html#FileWriter(java.io.File,%20boolean)

o FileWriter tem dois construtores (tá, na verdade 5, mas só interessa dois no momento), um deles é o que você usa, que diz que é para sobrescrever o arquivo, o segundo, é o que você passa um Boolean como parâmetro, e esse Boolean indica se é para adicionar ou sobrescrever o arquivo.

Mas, como o felipe.sales disse, melhor declarar os out e fw fora do laço pois você está “abrindo” o arquivo cada vez que você vai inserir uma linha.