如何使Java中的InputStream的深层复制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使Java中的InputStream的深层复制相关的知识,希望对你有一定的参考价值。
InputStream的是抽象的,不公开(没有尽自己的孩子)的内部数据对象。所以唯一的办法,以“深拷贝”InputStream的是创造ByteArrayOutputStream后执行Read()上的InputStream,写(),该数据ByteArrayOutputStream。然后做: 方通=新ByteArrayInputStream的(byteArrayOutputStream.toArray());如果您使用的是标记()您的InputStream那么你的确不能扭转这一点。这使你流“消费”。
要“重用”你的InputStream避免使用标记(),然后在阅读呼叫复位结束()。您会然后读取来自流的开头。
编辑:
顺便说一句,IOUtils使用这个简单的code片段复制的InputStream:
公共静态INT副本(输入的InputStream,OutputStream的输出)抛出IOException异常
byte []的缓冲区=新的字节[DEFAULT_BUFFER_SIZE]
诠释计数= 0;
INT N = 0;
而(-1!=(N = input.read(缓冲液)))
output.write(缓冲液,0,n)的;
数+ = N;
返回计数;
参考技术A 我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快
以上是关于如何使Java中的InputStream的深层复制的主要内容,如果未能解决你的问题,请参考以下文章