Java如何实现输入流的复制?(输入流重复使用)

2023-05-16

众所周知,Java的输入流只能读取一次,但是实际操作中我们想要重复操作inputStream就会出现问题。

那如果是操作同一个inputStream,我们可以通过转字节流的方式来解决。

/**
 * @param ins
 */
public byte[] saveaIns(InputStream ins){
	byte[] buf = null;
	try {
		if(ins!=null){
			buf = org.apache.commons.io.IOUtils.toByteArray(ins);//ins为InputStream流  
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	return buf;
}

如果你想通过复制当前InputStream来实现,也可以自己封装一个方法来clone一下当前的InputStream对象,像这样:

/**
* @param input 输入流
* @param count 复制个数
* @return 返回
*/

public static List<InputStream> cloneInputStream(InputStream input, Integer count) throws Exception {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = input.read(buffer)) > -1) {
            baos.write(buffer, 0, len);
        }
        baos.flush();

        List<InputStream> inputStreamList = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            inputStreamList.add(new ByteArrayInputStream(baos.toByteArray()));
        }
        return inputStreamList;
    }

大家还有比较好的方式解决InputStream对象重复使用问题的方法,可以在评论区发布一下,一起交流学习下!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java如何实现输入流的复制?(输入流重复使用) 的相关文章

随机推荐

  • Linux下安装Xrdp,epel提示无软件包

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 xff0c 允许您以图形方式控制远程系统 使用 RDP xff0c 您可以登录到远程计算机并创建一个真实的桌面会话 xff0c 就像您已登录到本地计算机一样 CentOS
  • 二进制、八进制、十进制及十六进制间的转换最简单的方法

    二进制 八进制 十进制及十六进制的转换 1 四种常用进制概况 在讲解这四种常用进制间转换之前 xff0c 需要先清楚每种进制数都包含哪些数字 xff1a 在上面的图中很轻易的可以看出这四种进制数中数字元素的区别 xff0c 并且除了我们最常
  • 使用TensorFlow Lite 部署自定义对象检测模型

    使用TensorFlow Lite 部署自定义对象检测模型 1 2022 03 05 文章目录 使用TensorFlow Lite 部署自定义对象检测模型 1 一 訓練自定義模型 4 1 收集數據2 訓練模型 二 集成TFLite模型的步驟
  • 使用docker安裝GPU版pytorch

    1 在docker pytorch 網址找到自己需要的環境 網址 https hub docker com r pytorch pytorch tags 点击复制 devel 版 连接 此处以 docker pull pytorch pyt
  • docker ssh连接

    docker ssh连接 1 进入docker span class token function passwd span span class token comment add root passward 记住自己设置的密码 xff0c
  • Docker容器显示图形到宿主机屏幕

    Docker容器显示图形到宿主机屏幕 在 docker 内 span class token function apt span span class token function install span xorg span class
  • MeshLab——计算点云法向量求三角网格

    MeshLab 原始 1 点云分割 点击1后选中要删除区域 xff0c 点击2删除即可得到如下 xff1a 2 画三角网格 求法向量 Filters gt Normal Curvatures and Orientation gt Compu
  • Jetson nano 卡刷教程

    Jetson nano 卡刷教程 所需用的的软件资源操作步骤 所需用的的软件资源 1 镜像 jetson nano jp451 sd card image zip 可自己在官网下载 https developer nvidia com em
  • dockers移盘&挂载

    docker 目录移动到其他磁盘的操作 systemctl stop docker 停止dockersystemctl status docker 查看docker服务状态mv var lib docker media li 1d10567
  • window docker 教程

    window docker 教程 1 docker windows 安装2 Docker Windows 修改默认镜像文件位置2 1 更改Docker Desktop设定2 2 创建文件链接2 3重新启动docker即可 1 docker
  • element-ui upload 上传组件中on-success 声明方法不生效问题

    最近在学习vue 2 xff0c 实现element ui 框架中upload 上传文件组件碰到的一些坑 xff1a 1 上传文件成功后on success 声明的方法不执行 lt el upload class 61 34 upload
  • python导出环境依赖(requirements.txt)

    pip list format span class token operator 61 span freeze span class token operator gt span requirement txt 即可在同级目录得到一个re
  • 000-搭建Gitea-自己的git服务器

    000 搭建Gitea 自己的git服务器 1 什么是gitea 官网的介绍是 xff1a Gitea的首要目标是创建一个极易安装 xff0c 运行非常快速 xff0c 安装和使用体验良好的自建 Git 服务 我们采用Go作为后端语言 xf
  • mac版eclipse安装lombok

    步骤 xff1a 1 看图 2 右击图标 3 4 点击eclipse 进入文件夹 5 复制lombok jar到这里 官网 xff1a https projectlombok org 在这里下载一个 6 修改eclipse ini 加上两行
  • Oracle恢复数据到某一节点

    alter table 表名 enable row movement 开启表行移动 flashback table 表名 to timestamp to timestamp 39 20210824 15 55 00 39 39 yyyymm
  • Oracle创建序列

    create sequence SEQ SHARE ID minvalue 1 增长最小值 maxvalue 9999999999 增长最大值 也可以设置NOMAXvalue 不设置最大值 start with 1 从1开始计数 incre
  • idea好用的插件分享(一)---any-rule(正则表达式插件)

    any rule一个常用正则表达式大全 在idea的插件市场中搜索any rule插件 xff0c 安装好后重启idea 在编辑器页面右击 xff0c 可以选中any rule打开搜索框 xff0c Mac系统也可以使用option 43
  • Mac上好用的连接服务器的工具(Termius)

    虽然 Mac本身的终端自带远程连接的作用 xff0c 但是长时间不操作 xff0c 会失去连接 xff0c 就让人很烦恼 xff0c 而且 xff0c 传输文件也必须用命令 xff0c 就很令人烦恼 所以 xff0c 本次推荐的是Termi
  • JDBC连接Mysql8.0失败解决方法(终极版)

    mysql8 0驱动下载地址 xff1a 链接 https pan baidu com s 1BvB P1 Ztt8vI0fCBVjvg pwd 61 ygb4 提取码 ygb4 复制这段内容后打开百度网盘手机App xff0c 操作更方便
  • Java如何实现输入流的复制?(输入流重复使用)

    众所周知 xff0c Java的输入流只能读取一次 xff0c 但是实际操作中我们想要重复操作inputStream就会出现问题 那如果是操作同一个inputStream xff0c 我们可以通过转字节流的方式来解决 64 param in