我们可以在 Java 中将字节数组转换为 InputStream 吗?

我们可以在 Java 中将字节数组转换为 InputStream 吗?我一直在网上找,但是找不到。

我有一个以 InputStream 作为参数的方法。

我拥有的 InputStream cph是 base64编码的,所以我必须使用

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

现在如何再次将 decodedBytes转换为 InputStream

146791 次浏览

使用 ByteArrayInputStream:

InputStream is = new ByteArrayInputStream(decodedBytes);

如果你使用 Robert Harder 的 Base64实用程序,你可以:

InputStream is = new Base64.InputStream(cph);

或者使用 sun 的 JRE,你可以这样做:

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

然而,不要依赖那个类继续作为 JRE 的一部分,或者甚至继续做它今天似乎做的事情。Sun 说不要用它。

关于 Base64解码还有其他堆栈溢出问题,如 这个。

java.io.ByteArrayInputStream InputStream扩展为:

InputStream myInputStream = new ByteArrayInputStream(myBytes);

这是 在 javadocs:

byte[] byteArr = new byte[] { 0xC, 0xA, 0xF, 0xE };
InputStream is = new ByteArrayInputStream(byteArr);

使用 Guava 库将 byte []转换为 InputStream也是可能的。

     <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>






public static void guavaConversion() throws IOException{
byte[] bytesArray = {1, 2, 3};
InputStream inputStream = ByteSource.wrap(bytesArray).openStream();


System.out.println(inputStream.toString().getBytes().length); //just
//for testing
inputStream.close();
}