Escrever em ficheiro

6 respostas
L

Boas pessoal,

tenho uma consulta que me retorna o nome dos clientes da minha enpresa.
O meu problema é colocar estes nomes num ficheiro de texto.

tenho o seguinte codigo :

while (resultSet.next()){

System.out.printl(rs.getString(1));
out = new BufferedWriter(new FileWriter("C:/PS/FR/salarios.txt"));
out.write(rs.getString(1));
out.close();

}

este codigo cria o ficheiro beleza, mas so apanha o 1º cliente, ou seja so escreve uma linha.

Alguem me pode dizer porque isso acontece ?
Eu sei que tenho 60 clientes pois o meu System.out.printl(rs.getString(1)); me imprime todos os clientes, mas no ficheiro so aparece um( o primeiro ).

Obrigado desde ja !

6 Respostas

O

Olá,

Não sei se será isso, mas deves deves criar o bufferedWriter antes do ciclo senão ele estará sempre a criar o mesmo ficheiro por cima do anteriormente criado, a colocar nesse ficheiro apenas um cliente, e a fechar o mesmo.

out = new BufferedWriter(new FileWriter("C:/PS/FR/salarios.txt"));  
  while (resultSet.next()){     
   System.out.printl(rs.getString(1));  
   out.write(rs.getString(1));      
  } 
  out.close();
kaique

Se eu estiver falando besteira me perdões, mas acho que o problema está em você instanciar o BufferedWriter dentro do while, dessa forma você estará sempre escrevendo 1 linha no arquivo e depois criando um novo arquivo por cima do antigo e escrevendo 1 linha também.
Tenta instanciar esse buffer fora do while e depois de escrever no arquivo chama o método newLine() da classe BufferedWriter. Dessa forma você vai escrever 1 registro por linha, sacou?
Depois avisa qualquer coisa…

[]'s.

kaique

Se eu estiver falando besteira me perdões, mas acho que o problema está em você instanciar o BufferedWriter dentro do while, dessa forma você estará sempre escrevendo 1 linha no arquivo e depois criando um novo arquivo por cima do antigo e escrevendo 1 linha também.
Tenta instanciar esse buffer fora do while e depois de escrever no arquivo chama o método newLine() da classe BufferedWriter. Dessa forma você vai escrever 1 registro por linha, sacou?
Depois avisa qualquer coisa…

[]'s.

Jorge_tuga

boas… nao tenho 100% certeza mas penso k se colocar um TRUE no final do FileWriter, ira resolver o seu problema, ficará algo do genero:

while (resultSet.next()){

System.out.printl(rs.getString(1));

out = new BufferedWriter(new FileWriter(“C:/PS/FR/salarios.txt”, true));

out.write(rs.getString(1));

out.close();

}

o java assume por defeito FALSE e quer dizer que o ficheiro sera sempre renovado, utilizando TRUE sera sempre acrescentado o novo valor no fim do ficheiro.

ps: como acrescenta sempre ao fim do ficheiro, convem colocar 1 out.newline() dentro do ciclo para mudar de linha sempre que escreve um nome.

espero ter ajudado.

Alkamavo

try{

FileWriter out = new FileWriter("C:/PS/FR/salarios.txt);

while(resultSet.next()){
out.write(rs.getString(1));

}

out.close();

}

catch(FileNotFoundException ex){

System.out.println(Erro na escrita);

System.exit(1);

}

Alkamavo

Alkamavo:
try{

FileWriter out = new FileWriter("C:/PS/FR/salarios.txt);

while(resultSet.next()){
out.write(rs.getString(1)+"\r\n"));

}

out.close();

}

catch(FileNotFoundException ex){

System.out.println(Erro na escrita);

System.exit(1);

}

nao sei bem o k o teu getString() devolve…mas se o problema estiver por la…veh a definição deste metodo.—
ou entao defina apenas dois gets…um para devolver o nome e outro para devolver o salario…

e a escrita será

out.write(rs.getnome()+"\r\n"+rs.getsalario()+"\r\n");

Criado 27 de setembro de 2007
Ultima resposta 7 de dez. de 2007
Respostas 6
Participantes 5