Dúvida sobre funcionamento da BufferedWritter

Prezados,

Quando executo o trecho de código a seguir, ele apaga o conteúdo do arquivo .txt e grava apenas a string que recebeu como parâmetro. Alguém saberia o procedimento para que eu escreva em um .txt, concatenando o conteúdo a ser escrito com o que já está gravado no arquivo? (este método será usado para gravar a log de operação da aplicação em arquivo texto)

public boolean adicionaUmaLinha(String linha) {
		try{			
			os = new FileOutputStream(this.arq);
			osr = new OutputStreamWriter(os);
			bw = new BufferedWriter(osr);
			bw.append(linha);
			bw.newLine();
			bw.close();
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(null, "Erro 007: Arquivo não encontrado.");
			return false;
		} catch (FileLockInterruptionException e) {
			JOptionPane.showMessageDialog(null, "Erro 008: Arquivo em lock.");
			return false;
		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "Erro 009: Erro de I/O.");
			e.printStackTrace();
			return false;
		} 
		return true;
	}

vc deve criar o BufferedWriter da seguinte forma:

BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo, true));//este true configura que o arquivo será incrementado

Tenta ae, qualquer coisa é so falar.

Att,

isso como o poneis123 falo vc deve setar o TRUE pra que vc continue a escrever no mesmo arquivo

[]'s

Ou melhor ainda: delegue a tarefa de logging para classes responsáveis por isso. Use a classe Logger (de java.util.logging) cuida da parte suja. Um exemplo:

import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public final class LogManager {

	private LogManager() {
	}

	public static Logger getLogger(String file) {
		try {
			Logger logger = Logger.getLogger("LogManager");
			FileHandler f = new FileHandler(file, true);
			f.setFormatter(new SimpleFormatter());
			logger.addHandler(f);
			return logger;
		} catch (Exception e) {
			return null;
		}
	}

}

E para se usar, basta chamar o getLogger() e depois sair “logando”.

import java.util.logging.Level;
import java.util.logging.Logger;

public class TesteLog {

	public static void main(String[] args) {
		// uma vez feito isso, basta sair usando!
		Logger l = LogManager.getLogger("app.log");
		l.info("Chegamos aqui!");
		l.info("Vamos dormir um pouco");
		try {
			Thread.sleep(500);
			l.info("Ahh... que belo sono");
		} catch (InterruptedException e) {
			l.log(Level.SEVERE, "Exceção!", e);
		}
		l.severe("Epa... acho que dormi demais e perdi a hora!");
		l.info("Vamos fazer mais alguns testes...");
		try {
			((Object) null).toString();
			l.info("Nunca chegarei aqui...");
		} catch (NullPointerException e) {
			l.severe("Puxa, algo deu errado");
			l.log(Level.SEVERE, "Exceção!", e);
		}
	}
}

Prezados,

Agradeço a ajuda, ambas as sujestões me ajudarão bastante no desenvolvimento da aplicação.

Obrigado!

Bem vindo ao fórum !!!

Depois que seu problema tiver resolvido, vá no primeiro post, editar o Título adicionando a tag [RESOLVIDO] no final do Título .