OutputStream转InputStream必会的三种方式

发布时间:2024年01月24日

方法一

使用byteArray缓存转换

        ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
        byte[] buffer =byteArrayOutputStream.toByteArray();
        InputStream byteArrayInputStream = new ByteArrayInputStream(buffer);

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

方法二

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

这种方法支持流式的方式,一端写一端读,向PipedOutputStream写入的数据可以从PipedInputStream读出,比方法一好一点

  • PipedInputStream中存储数据的数组大小默认为1024,且使用过程中不可扩充,当一次性写入的数据超过这个数,则会有个AssertionError抛出。当然,我们可以在初始化PipedInputStream的时候进行设置。

方法三

使用Circular Buffers
导入maven依赖

<dependency>
    <groupId>org.ostermiller</groupId>
    <artifactId>utils</artifactId>
    <version>1.07.00</version>
</dependency>
CircularByteBuffer cbb = new CircularByteBuffer();
cbb.getOutputStream();
cbb.getInputStream()

文章来源:https://blog.csdn.net/qq_46548855/article/details/135818262
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。