Pouvons-nous convertir un tableau d'octets en InputStream en Java?


129

Pouvons-nous convertir un tableau d'octets en InputStream en Java? J'ai cherché sur Internet mais je n'ai pas pu le trouver.

J'ai une méthode qui a un InputStream comme argument.

Le InputStream que cphj'ai est encodé en base64, j'ai donc dû le décoder en utilisant

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

Maintenant, comment puis-je convertir à decodedBytesnouveau InputStream?


1
Le lien "Utiliser" en haut des pages de documentation de l'API est très utile pour ce genre de problèmes.
Tom Hawtin - tackline

Réponses:



4

Si vous utilisez l'utilitaire Base64 de Robert Harder , vous pouvez faire:

InputStream is = new Base64.InputStream(cph);

Ou avec JRE de sun, vous pouvez faire:

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

Cependant, ne comptez pas sur le fait que cette classe continue à faire partie du JRE, ou même à faire ce qu'elle semble faire aujourd'hui. Sun dit de ne pas l'utiliser.

Il y a d'autres questions Stack Overflow sur le décodage Base64, comme celle-ci.


10
N'utilisez pas la classe sun, elle est privée et ne doit pas être utilisée car elle peut changer à tout moment.
mP.

Je modifierai ma réponse pour inclure des avertissements désastreux. Le code dans la question utilise déjà BASE64Decoderce qui est probablementsun.misc.BASE64Decoder
Stephen Denne
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.