Java中如何实现outputStream转inputStream呢?

陈欣 Java经验 发布时间:2023-10-08 14:57:25 阅读数:1742 1
下文笔者讲述outputStream转inputStream的方法及示例分享,如下所示

outputStream转inputStream的实现思路

方式1:
    使用byte array进行相应的转换

方式2:
   使用Pipes进行相应的转换

方式3:
   使用Circular Buffers进行转换

使用byte array缓存转换

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ByteArrayInputStream swapStream = new ByteArrayInputStream(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);
 
注意事项
    PipedInputStream中存储数据的数组大小默认为1024
       使用过程中不可扩充 
          当一次性写入的数据超过这个数
                则会有个AssertionError抛出
           当然,我们可以在初始化PipedInputStream的时候进行设置 
      上述代码仅为pipe的一种使用的方式,其也可以初始化如下
      PipedOutputStream out = new PipedOutputStream();
      PipedInputStream in = new PipedInputStream(out);

使用Circular Buffers

作为PipedInputStream和PipedOutputStream的一种替代方式
    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());
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202310/16967482717299.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者