Java实现流的复制,解决流不可重用问题
背景介绍
在使用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实现流的复制,解决流不可重用问题相关推荐
- Java 关于文件的复制io流的操作
关于文件备份的三种方式解答 需要的jar包 jcifs jcifs 1.3.17 commons-net commons-net 3.3 commons-io commons-io 2.5 引入jar ...
- Java------IO流之文件专属流
文件专属流 文章目录 文件专属流 FileInputStream流 FileInputStream初步读取 FileInputStream循环读 IDEA默认当前路径 往byte数组中读 最终版Fil ...
- java 复制 inputstream_关于对inputstream流的复制
今天因为项目需要,获取到一个inputstream后,可能要多次利用它进行read的操作.由于流读过一次就不能再读了,所以得想点办法. 而InputStream对象本身不能复制,因为它没有实现Clon ...
- java 字符流图片_java 字节流、字符流(复制图片、复制文本)
1.File 1)构造方法 2)创建 3)判断.获取 4)删除 2.字节流 1)字节流写数据的3种方式 FileOutputStream fos = new FileOutputStream(&quo ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流...
/*** File类:文件的创建.删除.重命名.得到路径.创建时间等,是唯一与文件本身有关的操作类*/ public class Main {public static void main(Strin ...
- java 流 复制文件_【Java】使用字节流复制文件
其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
最新文章
- 如何用git命令行上传本地代码到github
- 前端Layui开发日常记录
- 时间序列里面最强特征之一
- Linux下的SVN命令
- Android Studio开发第二篇创建新项目
- 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解
- is 与 as 数据类型的操作 0108
- 一流设计导航|16map|效率导航最全设计类软件!速度收藏!!
- ARM 指令集版本和ARM 版本z
- Linux内核分析:recv、recvfrom、recvmsg函数实现
- matlab数据拟合
- 2、Scala下载、安装、环境搭建、及基本用法
- LINGO11 百度网盘
- 学会这个前端特效520还怕没CP伴侣
- dell服务器进系统失败,如何解决Dell服务器系统开机提示错误
- c语言中输出以e为底的指数,c语言中以e为底的指数怎么表示 c++中怎样表示以e为底的...
- 机房重构总结之步履蹒跚
- iphone/ipad保存图片问题
- 每晚夜里自我独行,随处荡,多冰冷,以往为了自我挣扎
- 程序员薪水最高的25家公司