背景介绍

在使用Java进行流操作的过程中,会出现需要重复使用流的情况,但是InputStream接口并未实现cloneable接口,因此不能实现复制,这是就要用到把流转换为另外一种形式,然后存入内存之中,并再次转化为流。

实现代码

public class CopyStream {public static void main(String[] args) throws IOException {File file = new File("‪E:\\03PCQQ文件\\Web应用安全规范 (2).doc");InputStream input = new FileInputStream(file);ByteArrayOutputStream baos = copyInputStream(input);// 复制出两个新的输入流(此时有一个InputStream的到两个相同的inputStream,如果需要多个还可以继续复制)InputStream codeStream = new ByteArrayInputStream(baos.toByteArray());InputStream opStream = new ByteArrayInputStream(baos.toByteArray());}/*** 流复制*/private static ByteArrayOutputStream copyInputStream(InputStream input) {try {ByteArrayOutputStream baos = new ByteArrayOutputStream();// 定义一个缓存数组,临时存放读取的数组//经过测试,4*1024是一个非常不错的数字,过大过小都会比较影响性能byte[] buffer = new byte[4096];int length;while ((length= input.read(buffer)) > -1) {baos.write(buffer, 0, length);}baos.flush();return baos;} catch (IOException e) {throw new IOException(e);}}}

以上即实现了流的复制。

Java实现流的复制,解决流不可重用问题相关推荐

  1. Java 关于文件的复制io流的操作

    关于文件备份的三种方式解答 需要的jar包 jcifs jcifs 1.3.17 commons-net commons-net 3.3 commons-io commons-io 2.5 引入jar ...

  2. Java------IO流之文件专属流

    文件专属流 文章目录 文件专属流 FileInputStream流 FileInputStream初步读取 FileInputStream循环读 IDEA默认当前路径 往byte数组中读 最终版Fil ...

  3. java 复制 inputstream_关于对inputstream流的复制

    今天因为项目需要,获取到一个inputstream后,可能要多次利用它进行read的操作.由于流读过一次就不能再读了,所以得想点办法. 而InputStream对象本身不能复制,因为它没有实现Clon ...

  4. java 字符流图片_java 字节流、字符流(复制图片、复制文本)

    1.File 1)构造方法 2)创建 3)判断.获取 4)删除 2.字节流 1)字节流写数据的3种方式 FileOutputStream fos = new FileOutputStream(&quo ...

  5. Java IO流之【缓冲流和文件流复制文件对比】

    与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...

  6. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  7. JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流...

    /*** File类:文件的创建.删除.重命名.得到路径.创建时间等,是唯一与文件本身有关的操作类*/ public class Main {public static void main(Strin ...

  8. java 流 复制文件_【Java】使用字节流复制文件

    其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  9. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

最新文章

  1. 如何用git命令行上传本地代码到github
  2. 前端Layui开发日常记录
  3. 时间序列里面最强特征之一
  4. Linux下的SVN命令
  5. Android Studio开发第二篇创建新项目
  6. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解
  7. is 与 as 数据类型的操作 0108
  8. 一流设计导航|16map|效率导航最全设计类软件!速度收藏!!
  9. ARM 指令集版本和ARM 版本z
  10. Linux内核分析:recv、recvfrom、recvmsg函数实现
  11. matlab数据拟合
  12. 2、Scala下载、安装、环境搭建、及基本用法
  13. LINGO11 百度网盘
  14. 学会这个前端特效520还怕没CP伴侣
  15. dell服务器进系统失败,如何解决Dell服务器系统开机提示错误
  16. c语言中输出以e为底的指数,c语言中以e为底的指数怎么表示 c++中怎样表示以e为底的...
  17. 机房重构总结之步履蹒跚
  18. iphone/ipad保存图片问题
  19. 每晚夜里自我独行,随处荡,多冰冷,以往为了自我挣扎
  20. 程序员薪水最高的25家公司

热门文章

  1. 你怎么看待你的职业规划?
  2. web3.0赋能人的灵魂~
  3. 2021.07.30【WGS/GWAS】丨全基因组分析全流程(上)
  4. 公益化运营:如何解决工具型产品的运营困境
  5. 在matlab gui中播放视频的方法
  6. Android简单实现给图片加阴影效果
  7. javascript 简单画心型线
  8. 漏掉的账目(用C语言去重)
  9. LTE学习笔记--LTE无线连接过程--切换
  10. 【Python百日进阶-Web开发-Feffery】Day343 - fac数据展示01:AntdAvatar头像(阿凡达)