Java中怎么将OutputStream 转换成InputStream

发布时间:2021-06-22 16:44:28 作者:Leah
来源:亿速云 阅读:3101

Java中怎么将OutputStream 转换成InputStream,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、使用byte array缓存转换

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());

这种方式最为简单,但是要求执行baos.toByteArray()这个方法之前,需要的数据已经完全写入,即无法做到边写边读,另外其需要足够的内存来一次性的容纳这些数据。

二、使用Pipes

PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream(in);
new Thread(
  new Runnable(){
    public void run(){
      class1.putDataOnOutputStream(out);
    }
  }
).start();
class2.processDataFromInputStream(in);

 顾名思义,pipe即为管道,这种方法支持流式的方式,一端写一端读,向PipedOutputStream写入的数据可以从PipedInputStream读出,很好的解决了方法一中的短处,是个人较为推荐的一种方式。

注意:

PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream(out);

 两种方式等价。

三、使用Circular Buffers

作为PipedInputStreamPipedOutputStream的一种替代方式,CircularBuffer有着更为简单的数据结构和使用方法,但是其并不是JDK自带的类需要额外引入。

<!-- https://mvnrepository.com/artifact/org.ostermiller/utils -->
<dependency>
    <groupId>org.ostermiller</groupId>
    <artifactId>utils</artifactId>
    <version>1.07.00</version>
</dependency>
CircularByteBuffer cbb = new CircularByteBuffer();
new Thread(
  new Runnable(){
    public void run(){
      class1.putDataOnOutputStream(cbb.getOutputStream());
    }
  }
).start();
class2.processDataFromInputStream(cbb.getInputStream());

 如上,CircularByteBufferInputStreamOutputStream作为其属性,相对于方法二使用更为简化,且更易理解。

注意:

看完上述内容,你们掌握Java中怎么将OutputStream 转换成InputStream的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 将数据转换成XML格式的好处有哪些
  2. java将word转换为html的示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java outputstream inputstream

上一篇:用ubuntu安装python3的教程

下一篇:java用BTrace实现在线动态诊断

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》