Fala galera
tudo certo?
Eu tenho uma rotina em que o usuário cadastra um documento, escolhendo
o arquivo físico referente ao mesmo, ao persistir, eu gravo os bytes do arquivo
em um campo CLOB no Oracle.
Até esse ponto está gravando tudo certo. O meu problema, é quando eu preciso
buscar o conteúdo do campo CLOB e mostrar o conteúdo do arquivo na tela.
Estou fazendo a busca dos bytes e colocando-os em um novo arquivo
com o seguinte trecho de código:
[code]Connection conn = DriverManager.getConnection
(“jdbc:oracle:oci:@192.168.2.96:1521:ORCL”, info);
//info - são as propriedades da minha conexão com o banco de dados, como usuário, senha, entre outros.
conn.setAutoCommit(false);
Statement ps = conn.createStatement();
ResultSet rs = ps.executeQuery(“SELECT CONTEUDO FROM DOCUMENTO WHERE ID = 10”);
while (rs.next()) {
Clob clob = rs.getClob(“CONTEUDO”);
File file = new File(“C:\Teste.pdf”);
InputStream fis = (InputStream)clob.getAsciiStream();
InputStreamReader conversor = new InputStreamReader(fis);
BufferedReader bf = new BufferedReader(conversor);
FileOutputStream out = new FileOutputStream(file);
boolean continua=true; String linha;
while(continua){
linha = bf.readLine();
if (linha==null){
continua=false;
}else{
out.write(linha.getBytes());
//tive que incluir uma quebra de linha depois de cada uma senão ficava tudo na mesma linha e o Adobe Reader não reconhecia como PDF.
out.write("\n".getBytes());
}
}
bf.close();
fis.close();
out.flush();
out.close();
}
[/code]
Depois disso o arquivo criado a partir dos bytes vindos do banco de dados está em branco.
Editei os arquivos pelo Notepad++ e comparei o conteúdo do arquivo original e do arquivo
que foi criado pelo java, e estão praticamente iguais.
Alguém já passou por algo parecido ou sabe como posso resolver isso?
Desde já agradeço.