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?

rover12
la source
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.

Stephen Denne
la source
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