Java实现InputStream的任意拷贝方式

 更新时间:2021年10月26日 10:51:42   作者:曲终人散J  
这篇文章主要介绍了Java实现InputStream的任意拷贝方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java InputStream的任意拷贝

有时候,当我们需要多次使用到同一个InputStream的时候如何实现InputStream的拷贝使用

我们可以把InputStream首先转换成ByteArrayOutputStream.然后你就可以任意克隆你需要的InputStream了

代码如下:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte[] buffer = new byte[1024];
int len;
while ((len = input.read(buffer)) > -1 ) {
    baos.write(buffer, 0, len);
}
baos.flush();
 
// 打开一个新的输入流
InputStream is1 = new ByteArrayInputStream(baos.toByteArray()); 
InputStream is2 = new ByteArrayInputStream(baos.toByteArray());

但是如果你真的需要保持一个原始的输入流去接收信息,你就需要捕获输入流的close()的方法进行相关的操作

复制InputStream流的代码

private static InputStream cloneInputStream(InputStream input) {
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = input.read(buffer)) > -1) {
            baos.write(buffer, 0, len);
        }
        baos.flush();
        return new ByteArrayInputStream(baos.toByteArray());
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于SpringCloud的微服务结构及微服务远程调用

    关于SpringCloud的微服务结构及微服务远程调用

    Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量,需要的朋友可以参考下
    2023-05-05
  • spring boot ajax跨域的两种方式

    spring boot ajax跨域的两种方式

    java语言在多数时,会作为一个后端语言,为前端的php,node.js等提供API接口。这篇文章主要介绍了spring boot ajax跨域的两种方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • 详解Java如何简化条件表达式

    详解Java如何简化条件表达式

    在复杂的实际业务中,往往会出现各种嵌套的条件判断逻辑。随着需求的增加,条件逻辑会变得越来越复杂。面对这种情况,简化判断逻辑就是不得不做的事情,下面为大家介绍几种方法
    2022-06-06
  • java在原字符中插入新字符或字符串实例

    java在原字符中插入新字符或字符串实例

    这篇文章主要介绍了java在原字符中插入新字符或字符串实例,具有很好的价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java8 Lambda和Invokedynamic详情

    Java8 Lambda和Invokedynamic详情

    关于Java8的Lambda 我们可以将lambda表达式与新的Streams API结合起来,以表达丰富的数据处理查询,下面文章小编就列举简单的例子给大家介说吧,感兴趣的小伙伴可以参考下面文章的具体内容奥
    2021-09-09
  • elasticsearch索引index之put mapping的设置分析

    elasticsearch索引index之put mapping的设置分析

    这篇文章主要为大家介绍了elasticsearch索引index之put mapping的设置分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Java把数字格式化为货币字符串实例代码

    Java把数字格式化为货币字符串实例代码

    这篇文章主要介绍了Java把数字格式化为货币字符串实例代码,需要的朋友可以参考下
    2014-02-02
  • 一篇文章带你入门Java数据类型

    一篇文章带你入门Java数据类型

    下面小编就为大家带来一篇Java的基本数据类型)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-08-08
  • springboot配置https安全连接的方法

    springboot配置https安全连接的方法

    这篇文章主要介绍了springboot配置https安全连接的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06

最新评论