Como percorrer e escrever na proxíma linha vazia de um arquivo txt?

1 resposta
J

Olá pessoal, gostaria de saber como percorrer e escrever na proxíma linha vazia de um arquivo txt…

A situação é essa, eu tenho em minha aplicação uma classe responsável por escrever um arquivo txt uma
messagem com o erro de um tra/catch, assim:

public void grava_ERRO(String messagem) {

		try {
			
			Calendar data, hora;
			
			data = Calendar.getInstance();
			int dia = data.get(Calendar.DAY_OF_MONTH);
			int mes = 1 + data.get(Calendar.MONTH);
			int ano = data.get(Calendar.YEAR);
			
			hora = Calendar.getInstance();
			int hh = hora.get(Calendar.HOUR_OF_DAY);
			int mm = hora.get(Calendar.MINUTE);
			int ss = hora.get(Calendar.SECOND);
			
			Object aux = (dia + "/" + mes + "/" + ano + " - " + hh + ":" + mm + ":" + ss);
			String hora_do_erro = aux.toString();
			
			OutputStream os = new FileOutputStream("log.txt");

			OutputStreamWriter osw = new OutputStreamWriter(os);

			BufferedWriter bw = new BufferedWriter(osw);
			
			bw.write(hora_do_erro + "  " + messagem);
			
			bw.close();

		} catch (FileNotFoundException e) {

			e.printStackTrace();

		} catch (IOException e) {

			e.printStackTrace();
			
		}

O método acima recebe uma String com erro e grava no arquivo…
Na prática fica assim:

try{

//Algum trecho de código que possa gerar um erro


}catch (Exception e){

String messagem = e.getMessage();

ControleDeErro erro = new ControledeErro();

erro.grava_ERRO(messagem);//chama o método descrito acima

}

A pergunta é: Como percorrer o arquivo e escrever depois da última linha
escrita anteriormente??? Pq do jeito ki tá ela só tá escrevendo na 1° linha, ou seja,
toda vez ki ocorre um erro ele sobrescreve a msg anterior…

Abraço

1 Resposta

J

jonhzinhooo:
Olá pessoal, gostaria de saber como percorrer e escrever na proxíma linha vazia de um arquivo txt…

A situação é essa, eu tenho em minha aplicação uma classe responsável por escrever um arquivo txt uma
messagem com o erro de um tra/catch, assim:

public void grava_ERRO(String messagem) {

		try {
			
			Calendar data, hora;
			
			data = Calendar.getInstance();
			int dia = data.get(Calendar.DAY_OF_MONTH);
			int mes = 1 + data.get(Calendar.MONTH);
			int ano = data.get(Calendar.YEAR);
			
			hora = Calendar.getInstance();
			int hh = hora.get(Calendar.HOUR_OF_DAY);
			int mm = hora.get(Calendar.MINUTE);
			int ss = hora.get(Calendar.SECOND);
			
			Object aux = (dia + "/" + mes + "/" + ano + " - " + hh + ":" + mm + ":" + ss);
			String hora_do_erro = aux.toString();
			
			OutputStream os = new FileOutputStream("log.txt");

			OutputStreamWriter osw = new OutputStreamWriter(os);

			BufferedWriter bw = new BufferedWriter(osw);
			
			bw.write(hora_do_erro + "  " + messagem);
			
			bw.close();

		} catch (FileNotFoundException e) {

			e.printStackTrace();

		} catch (IOException e) {

			e.printStackTrace();
			
		}

O método acima recebe uma String com erro e grava no arquivo…
Na prática fica assim:

try{

//Algum trecho de código que possa gerar um erro


}catch (Exception e){

String messagem = e.getMessage();

ControleDeErro erro = new ControledeErro();

erro.grava_ERRO(messagem);//chama o método descrito acima

}

A pergunta é: Como percorrer o arquivo e escrever depois da última linha
escrita anteriormente??? Pq do jeito ki tá ela só tá escrevendo na 1° linha, ou seja,
toda vez ki ocorre um erro ele sobrescreve a msg anterior…

Abraço


[RESOLVIDO]

Na hora de criar o FileOutputStream usa-se o construtor com dois argumentos, passando true para o append (segundo argumento):

e o código ficou assim:

OutputStream os = new FileOutputStream("log.txt",true);  
  
OutputStreamWriter osw = new OutputStreamWriter(os);  
    
BufferedWriter bw = new BufferedWriter(osw);  
   
bw.newLine();  
       
bw.append(hora_do_erro + " " + messagem);  
            
bw.close();

No caso, ainda coloquei um newLine() para criar
uma nova linha, senão a messagem é escrita na mesma
linha da anterior

Criado 6 de dezembro de 2009
Ultima resposta 7 de dez. de 2009
Respostas 1
Participantes 1