Can we convert a byte array into an InputStream in Java?

JavaBase64Inputstream

Java Problem Overview


Can we convert a byte array into an InputStream in Java? I have been looking on the internet but couldn't find it.

I have a method that has an InputStream as argument.

The InputStream cph I have is base64 encoded so I had to decode it using

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

Now how do I convert decodedBytes again to InputStream?

Java Solutions


Solution 1 - Java

Use ByteArrayInputStream:

InputStream is = new ByteArrayInputStream(decodedBytes);

Solution 2 - Java

If you use Robert Harder's Base64 utility, then you can do:

InputStream is = new Base64.InputStream(cph);

Or with sun's JRE, you can do:

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

However don't rely on that class continuing to be a part of the JRE, or even continuing to do what it seems to do today. Sun say not to use it.

There are other Stack Overflow questions about Base64 decoding, such as this one.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionrover12View Question on Stackoverflow
Solution 1 - JavaDaniel RikowskiView Answer on Stackoverflow
Solution 2 - JavaStephen DenneView Answer on Stackoverflow