Java实现inputstream流的复制代码实例

 更新时间:2020年02月13日 14:38:53   作者:薛柏梁  
这篇文章主要介绍了Java实现inputstream流的复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Java实现inputstream流的复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

获取到一个inputstream后,可能要多次利用它进行read的操作。由于流读过一次就不能再读了,而InputStream对象本身不能复制,而且它也没有实现Cloneable接口,所以得想点办法。

实现思路:

1、先把InputStream转化成ByteArrayOutputStream

2、后面要使用InputStream对象时,再从ByteArrayOutputStream转化回来

代码

package com.test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class StreamOperateUtil {
	public static void main(String[] args) throws FileNotFoundException {
		InputStream input = new FileInputStream("c:\test.txt");
		//InputStream input = httpconn.getInputStream(); //这里可以写你获取到的流
		ByteArrayOutputStream baos = cloneInputStream(input);
		// 打开两个新的输入流 
		InputStream stream1 = new ByteArrayInputStream(baos.toByteArray());
		InputStream stream2 = new ByteArrayInputStream(baos.toByteArray());
	}
	private static ByteArrayOutputStream 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 baos;
		}
		catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Initializr只能创建为Java 17版本以上的问题解决

    Spring Initializr只能创建为Java 17版本以上的问题解决

    这篇文章主要给大家介绍了关于Spring Initializr只能创建为Java 17版本以上问题的解决办法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • 基于java配置nginx获取真实IP代码实例

    基于java配置nginx获取真实IP代码实例

    这篇文章主要介绍了基于java配置nginx获取真实IP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java Spring 控制反转(IOC)容器详解

    Java Spring 控制反转(IOC)容器详解

    这篇文章主要为大家详细介绍了Spring控制反转IoC入门使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 一文带你厉害Java设计模式中的模板方法

    一文带你厉害Java设计模式中的模板方法

    模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。这篇文章就来带大家了解一下Java模板方法的概念与实现,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • J2SE基础之下载eclipse并创建项目

    J2SE基础之下载eclipse并创建项目

    本文给大家介绍的是最流行的java 集成开发环境IDE eclipse的使用方法,非常的简单,有需要的小伙伴可以参考下
    2016-05-05
  • logback自定义json日志输出示例详解

    logback自定义json日志输出示例详解

    这篇文章主要为大家介绍了logback自定义json日志输出,就是通过logback日志体系以及logstash提供的json log依赖将数据以json格式记录到日志文件的例子
    2022-03-03
  • IDEA配置MAVEN本地仓库的实现步骤

    IDEA配置MAVEN本地仓库的实现步骤

    本文主要介绍了IDEA配置MAVEN本地仓库的实现步骤,将详细介绍如何配置Maven环境变量,Maven配置文件,可以轻松地设置和配置MAVEN本地仓库,以便在IDEA中享受更高效的开发体验
    2023-08-08
  • SpringBoot拦截器与文件上传实现方法与源码分析

    SpringBoot拦截器与文件上传实现方法与源码分析

    其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了。本文主要给大家介绍了关于如何在Springboot实现登陆拦截器与文件上传功能,需要的朋友可以参考下
    2022-10-10
  • 解决因jdk版本引起的TypeNotPresentExceptionProxy异常

    解决因jdk版本引起的TypeNotPresentExceptionProxy异常

    这篇文章介绍了解决因jdk版本引起的TypeNotPresentExceptionProxy异常的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Java中的@Cacheable注解的作用详解

    Java中的@Cacheable注解的作用详解

    这篇文章主要介绍了Java中的@Cacheable注解的作用详解, 使用 @Cacheable 注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法,需要的朋友可以参考下
    2023-10-10

最新评论