Pessoal gostaria de uma ajuda, vou contar o que eu quero fazer:
Tenho que fazer upload de um arquivo ".XML " , eu pego esse
arquivo transformo em um array de bytes e jogo no banco postgresSQL.
Até aqui deu tudo certo, só que eu gostaria de saber como eu faço
para pegar esse array de bytes e transforma-lo no meu arquivo “.XML” original.
Se alguém poder postar o código, ficaria grato.
Desde já agradeço a ajuda.
Classe FileOutputStream, método write; esse método recebe um array de bytes e o grava em um arquivo. Não se esqueça de fechar o arquivo (método “close”).
caminho = destino (“C:\teste\arquivo.xml”)
byteArray = o array de bytes
D
Deivid_Landim
Meu código é o seguinte:
publicvoidretornaXML(){Statementstmt;Stringquery="select arquivo from historico_envio where id = "+4;try{stmt=conn.createStatement();ResultSetrs=stmt.executeQuery(query);byte[]b=null;while(rs.next()){b=rs.getBytes("arquivo");}FileOutputStreamfileOutputStream=newFileOutputStream(newFile("/home/deivid/Desktop/aluno.xml"));fileOutputStream.write(b);fileOutputStream.close();}catch(Exceptione){e.printStackTrace();}}
E aqui está o código que eu transformo o arquivo em um array de byte:
Só que na hora de carregar o conteúdo do banco para o arquivo, só aparece o seguinte dentro do arquivo “[B@4845aa”
entanglement, agradeço sua ajuda.
N
ncm
Posso estar errado, mas seu problema pode ser a falta do flush();
Antes de fechar o arquivo, chame o método flush(), que ele escreve físicamente o arquivo.
Tenta aew e posta a resposta.
publicvoidretornaXML(){Statementstmt;Stringquery="select arquivo from historico_envio where id = "+4;try{stmt=conn.createStatement();ResultSetrs=stmt.executeQuery(query);byte[]b=null;while(rs.next()){b=rs.getBytes("arquivo");}FileOutputStreamfileOutputStream=newFileOutputStream(newFile("/home/deivid/Desktop/aluno.xml"));fileOutputStream.write(b);fileOutputStream.flush();// <<--- ATENÇÃO AQUI fileOutputStream.close();}catch(Exceptione){e.printStackTrace();}}
D
Deivid_Landim
ncm:
Posso estar errado, mas seu problema pode ser a falta do flush();
Antes de fechar o arquivo, chame o método flush(), que ele escreve físicamente o arquivo.
Cara coloquei o fileOutputStream.flush(); mas continuou com o mesmo problema: o arquivo só grava "[B@4845aa"
Alguém poderia olhar o método loadBytes se estar realmente passarndo um arquivo para um array de bytes, desde já agradeço.
V
ViniGodoy
E como você está fazendo para salvar esse array de bytes no banco?
N
ncm
Comigo o seu código funcionou, ele leu direitinho o arquivo
Mas eu fiz outro que faz exatamente a mesma coisa.
Vou postar só para você ver.
De qualquer forma o problema não está na transformação em bytes.
Me diz ai qual é o tipo da coluna do banco que recebe esses bytes?
Pessoal, o problema era na hora de salvar no banco eu estava salvando errado.
Os dois métodos citados acima estão corretos.
Agradeço a todos pela ajuda.