Buffered writer

Oi gente… poderiam me ajudar com um probleminha…
tipo assim… tenho uma classe que imprime em arquivo…no qual seu metodo recebe um arraylist…
porém… se eu chamar o metodo duas vezes, uma com um array list, e outra com ouitro array list, nao consigo imprimir no arquivo os dois array list… acho que o método flush barra isso…só consigo imprimir um array list. Não dá problema… mas um fica eskecido…

metodo recebe arraylist em p:

try {
BufferedWriter arquivo = new BufferedWriter(new FileWriter©);

        for(int i = 0;i<p.size();i++) {

            sb.append(p.get(i));
        }


        arquivo.write(sb.toString());
        //arquivo.newLine();
        arquivo.flush();

Poderiam me ajudar?

Valeu

  1. Não use nomes de variáveis com apenas uma letra. Quiquié “c” ou “p”? Só se o nome da variável representa um valor em uma fórmula, ou se representa um índice.

  2. O uso do “flush” é desnecessário em 99% do tempo; entretanto, você SEMPRE deve fechar seus arquivos. Se você quer, além disso, continuar a escrever em um arquivo já existente, tem de usar a opção “append” que existe na abertura de arquivos.
    Veja: http://java.sun.com/javase/6/docs/api/java/io/FileWriter.html
    e com mais atenção, [url=http://java.sun.com/javase/6/docs/api/java/io/FileWriter.html#FileWriter%28java.lang.String,%20boolean%29FileWriter (String filename, boolean append)[/url].

Por exemplo:

PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter ("arquivo.txt", true)));
for (int i = 0; i < p.size(); ++i) {
    pw.println (p.get (i));
}
pw.close();
  1. Dica: em 99% das vezes é melhor usar um PrintWriter como fiz acima, porque você ganha o “println” e o “printf” para você usar. Com o BufferedWriter você só consegue o newLine() (que no seu caso acho que nem adianta muito).