Erro com PrintWriter e FileWriter

7 respostas
javakid

Bom dia gente,

alguem ja teve um erro igual esses ?

java.sql.SQLException: Stream já foi fechado
FileWriter writer = new FileWriter(new File("arquivo.txt"));
		PrintWriter saida = new PrintWriter(writer);
if...{
for (um monte de coisa) {
stmt.....
resultset...

while (rs.next()){
saida.println(rs.getString("nome");
}
rs.close();
stmt.close();
}
saida.close()
writer.close();
}
}

problema q faço para outros arquivos(Outros File e PrintWriters), e ele gera o arquivo normal!!!

alguem pode me dizer q zanga é essa ?

obrigado

7 Respostas

rdgms

Eh que vc ta fechando o stream nao?

if...
{   
   for (um monte de coisa) {   
   stmt.....   
   resultset...   
  
   while (rs.next()){   
       saida.println(rs.getString("nome");   
   }   
   //Aqui vc fecha o PrintWriter  e o FIle Writer e vai querer usar eles denovo (PQ tem um FOR)
   rs.close();   
  stmt.close();   
}   
saida.close()   
writer.close();   
}   
}

Coloca eles fora do for blz…

javakid

então… mas eles estão fora do for…

o problema aparece quando coloco + um campo no meu saida.println…
muito estranho…

teria + alguma coisa q eu possa fazer ?

rdgms

ta fora???
pq o codigo que vc passo ai ele ta dentro…
o codigo ta assim???

if...   
{     
   for (um monte de coisa) 
  {     
      stmt.....     
      resultset...     
     
       while (rs.next())
        {     
           saida.println(rs.getString("nome");     
        }     
  }
 rs.close();     
 stmt.close();     
 saida.close()     
 writer.close();     
}

pq o erro
" Java.sql.SQLException: Stream já foi fechado "
Esta dizendo que você fecho o stream e ta tentando usar ele depois

javakid

naaaao…

fecho depois do for… desculpa se esqueci de fechar…

  • to detectando o problema… olha só q maluco:

o arquivo grava qualquer coisa, a não ser uma coluna do BD que eu coloco…

saida.println(rs.getString("nome"));

assim grava tranquilo…

saida.println(rs.getString("endereco"));

mas ja essa coluna aki ele mostra o erro…

ele ja gravou no arquivo até pedra… menos essa maldita coluna… incrível!!! :shock:

rdgms

Vixi… e vc ja usou o debug para verificar que a coluna do bd nao ta vindo nullo…
da uma olhada ai…

javakid

identifiquei o problema…

eu tava fazendo um sysout, junto com um printwriter… e isso era demais ele tava estourando e dado akele erro

como eu tava fazendo rs.get… + rs.get… + rs. get… ele não tava conseguindo…
aí criei um objeto
e mandei gravar não a linha, mas cada objeto…

valew pela ajuda!

V

Cara como assim criou um objeto…

pode explicar…

o meu ta assim

while (resultSet.next()) {
		row = sheet.createRow(resultSet.getRow());
		for (int j = 1; j <= resultSet.getMetaData().getColumnCount(); j++) {
		    Object value = resultSet.getObject(resultSet.getMetaData().getColumnName(j));
		    cell = row.createCell(j - 1);
		    sheet.autoSizeColumn(j - 1);
		    if (value != null && value.getClass().equals(BigDecimal.class)) {
			cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
			cell.setCellValue(((BigDecimal) value).toString());
		    } else if (value != null && value.getClass().equals(String.class)) {
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue((String) value);
		    } else if (value != null && value.getClass().equals(Timestamp.class)) {
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(formataData((Timestamp) value));
		    } else if (value != null && value.getClass().equals(BigInteger.class)) {
			cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
			cell.setCellValue(((BigInteger) value).toString());
		    }
		}
	    }
Criado 10 de março de 2008
Ultima resposta 7 de abr. de 2011
Respostas 7
Participantes 3