Podemos converter uma matriz de bytes em um InputStream em Java?


129

Podemos converter uma matriz de bytes em um InputStream em Java? Eu estive procurando na internet, mas não consegui encontrá-lo.

Eu tenho um método que tem um InputStream como argumento.

O InputStream que cpheu tenho é codificado em base64, então eu tive que decodificá-lo usando

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(cph);

Agora, como faço para converter decodedBytesnovamente para InputStream?


1
O link "Usar" na parte superior das páginas de documentos da API é muito útil para esses tipos de problemas.
Tom Hawtin - tackline

Respostas:



4

Se você usar o utilitário Base64 de Robert Harder , poderá fazer:

InputStream is = new Base64.InputStream(cph);

Ou com o JRE da sun, você pode:

InputStream is = new
com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64DecoderStream(cph)

No entanto, não confie que essa classe continue fazendo parte do JRE, ou mesmo continuando a fazer o que parece fazer hoje. Sun diz para não usá-lo.

Existem outras perguntas sobre estouro de pilha sobre decodificação Base64, como esta.


10
Não use a classe sun, ela é particular e não deve ser usada, pois pode mudar a qualquer momento.
mP.

Vou editar minha resposta para incluir avisos terríveis. O código em questão já está usando BASE64Decodero que é presumivelmentesun.misc.BASE64Decoder
Stephen Denne
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.