Como conseguir um InputStream a partir de um array de bytes?

6 respostas
Luiz_Gustavo

Galera, como é que faço para obter um InputStream a partir de um array de bytes?
Minha situação é a seguinte: preciso gravar arquivos PDF no banco de dados, e vou apresentá-los utilizando o viewer da adobe.
A entrada de dados para o viewer é através de um InputStream.
Colocar um arquivo no banco é beleza, e quando obtenho o conteúdo do banco, posso obter o InputStream direto, a partir do método getBinaryStream() do ResultSet. Porém, em minha classe, quero que o atributo seja um array de bytes, e quero transformá-lo em um InputStream somente na hora de apresentar o conteúdo.

agradeço a quem puder ajudar !

[]'s

6 Respostas

_fs

Não tenho certeza, mas acho que é isto aqui:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/ByteArrayInputStream.html

Luiz_Gustavo

Putz LIPE, é exatamente isso!
Testei aqui e deu certo.

vlw!

:thumbup:

T

Cuidado com arrays de bytes - já pensou qual é o tamanho máximo de um PDF?
Se puder, evite ficar com um PDF inteirinho dentro da memória.

Luiz_Gustavo

thingol:
Cuidado com arrays de bytes - já pensou qual é o tamanho máximo de um PDF?
Se puder, evite ficar com um PDF inteirinho dentro da memória.

O que me aconselharia thingol? Trabalhar com o InputStream direto?
Uma vez, trabalhando com imagens, tive problemas ao usar o InputStream. Eu tinha em meu objeto um atributo do tipo InputStream, e depois que eu criava um ImageIcom com esse InputStream, eu não conseguia criar outro.
Resolvi então trabalhar com arrays de bytes.
Pensei em fazer o mesmo com os PDF’s (se bem que as imagens que tenho no banco são bem menores).
Os arquivos PDF’s não devem passar de 300 KB.

A

Olá amigo tem como vc disponibilizar os fontes do seu projeto, estou querendo fazer o mesmo aqui e estou com dificuldade da implementação/transformação do byte[] para InputStream…

wagnerfrancisco

Conforme o Filipe Sabella sugeriu, você pode usar um ByteArrayInputStream:

byte[] arrayDeBytes;
InputStream input = new ByteArrayInputStream(arrayDeBytes);
Criado 30 de maio de 2006
Ultima resposta 7 de jul. de 2013
Respostas 6
Participantes 5