Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 561
rover12 Avatar asked Nov 26 '09 07:11

rover12


People also ask

How do you create an InputStream from byte array in Java?

Using Apache Commons IO to convert byte [] to InputStream First, we have to create a String object from our byte array, then use IOUtils. toInputStream to convert it into InputStream . Note that converting from String to InputStream requires encoding.

Can we convert byte array to file in Java?

In order to convert a byte array to a file, we will be using a method named the getBytes() method of String class. Implementation: Convert a String into a byte array and write it in a file. Example: Java.


2 Answers

Use ByteArrayInputStream:

InputStream is = new ByteArrayInputStream(decodedBytes); 
like image 102
Daniel Rikowski Avatar answered Sep 16 '22 18:09

Daniel Rikowski


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.

like image 39
Stephen Denne Avatar answered Sep 18 '22 18:09

Stephen Denne