Java实现InputStream的任意拷贝方式
作者:曲终人散J 发布时间:2022-04-08 10:11:32
标签: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;
}
}
来源:https://blog.csdn.net/jys1115/article/details/42642549
0
投稿
猜你喜欢
- 当 Maven 无法依赖 spring-cloud-starter-zipkin 时,您可以尝试以下方法解决:确保拼写正确:请检查项目中的
- 前言MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。那
- mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官
- using System.IO; using System.Collections;static string deleteComments
- 前提最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示U
- 一:工具栏(JToolBar)代码示例:import javax.swing.*;//工具栏的使用案例public class JToolB
- AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文
- FileUpload文件上传fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析request
- 目录1 Exchanger 介绍2 Exchanger 实例exchange等待超时3 实现原理1 Exchanger 介绍前面分别介绍了C
- 本文实例讲述了C#修改及重置电脑密码DirectoryEntry实现方法。分享给大家供大家参考。具体如下:C#修改电脑密码方法如下:///
- Android 动画实现几种方案在 Android 的 FrameWork 中,为我们提供三种动画的实现方式:逐帧(Frame)动画、视图/
- IntelliJ IDEA2022 springboot 热部署 html#pom.xml<dependency>
- 一、错误处理原理分析使用SpringBoot创建的web项目中,当我们请求的页面不存在(http状态码为404),或者器发生异常(http状
- Java 爬虫工具Jsoup详解Jsoup是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内
- 我记得最开始接触多进程,多线程这一块的时候我不是怎么理解,为什么要有多线程啊?多线程到底是个什么鬼啊?我一个程序好好的就可以运行为什么要用到
- 本文实例为大家分享了java排序算法之冒泡排序的具体代码,供大家参考,具体内容如下冒泡排序冒泡排序无疑是最为出名的排序算法之一,从序列的一端
- 在[高并发Java 二] 多线程基础中,我们已经初步提到了基本的线程同步操作。这次要提到的是在并发包中的同步控制工具。1. 各种同步控制工具
- 本文实例讲述了C#中Socket通信用法。分享给大家供大家参考。具体如下:一、UDP方式:服务器端代码:static void Main(s
- /** * 三角数字: * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,... *
- Spring整合mybatis的mapper生成过程mapperScannerConfigurer实现了BeandifinitionRegi