BufferedWriter Duvida

5 respostas
R

Eu abri um BufferedWriter na classe principal e escrevi normalmente, porem antes do final do programa uma outra classe tb tenta escreve neste arquivo porem nao eh escrito.

Alguem pode me ajudar?

5 Respostas

Marky.Vasconcelos

Código please

R
Class Principal{

BufferedWriter logOthers = new BufferedWriter( new FileWriter(

arquivoLogOthers,true));

logOthers.write(Sucesso);

chama classe Others.

logOthers.close

}
Class Others{

BufferedWriter logOthers = new BufferedWriter( new FileWriter(

arquivoLogOthers,true));

logOthers.write(SucessoNovamente);

}
Foxlol

Quando vc utilizou na classe Principal:

BufferedWriter logOthers = new BufferedWriter(new FileWriter(arquivoLogOthers,true));

Vc criou uma stream de comunicação(canal) com o arquivo.
E ao chamar a classe Others vc ainda naum tinha fechado este canal, posi chamou antes do:

logOthers.close

Se vc fizer a chamada depois de fechar o stream na classe Principal, vai funcionar.

Abraços

davidbuzatto

Calma, num é bem isso que io Foxlol falou não.
Em casa classe vc cria um stream independendo do outro, a única coisa em comum é que os dois são relacionados ao mesmo arquivo. Eu acho que o problema que está ocorrendo é que vocênão está fechando o stream da classe Orders, sendo assim não está havendo flush do stream dentro do arquivo… Vou fazer um teste aqui…

davidbuzatto

Pronto, agora funciona.

Vc precisa fechar ou dar um flush explicitamente no stream para os dados serem gravados.

Vc vai perceber que SucessoNovamente vai ser gravado primeiro no arquivo, pois o stream de Others foi fechado primeiro. Se vc der um flush antes de criar e "executar" others vc vai ver que o resultado vai ser o contrário.

Dá uma olhada no código.

import java.io.*;

public class Principal{ 

	public static void main( String[] args ) {
		
		try {
		
			BufferedWriter logOthers = new BufferedWriter( 
					new FileWriter( "arquivoLogOthers.txt", true) );
				
			logOthers.write("Sucesso"); 
		
			Others o = new Others();
			o.executa();
		
			logOthers.close();
		
		} catch ( IOException exc ) {
			
		}
		
	}

} 

class Others { 

	public void executa() throws IOException {
		
		BufferedWriter logOthers = new BufferedWriter( 
				new FileWriter( "arquivoLogOthers.txt", true) );
				
		logOthers.write("SucessoNovamente"); 
		logOthers.close();
		
	}

}

Até mais!

Criado 31 de julho de 2007
Ultima resposta 31 de jul. de 2007
Respostas 5
Participantes 4