永发信息网

如何使Java中的InputStream的深层复制

答案:2  悬赏:50  手机版
解决时间 2021-03-25 23:05
  • 提问者网友:别再叽里呱啦
  • 2021-03-25 06:46
如何使Java中的InputStream的深层复制
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-03-25 07:07
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;
}
返回计数;
}
全部回答
  • 1楼网友:三千妖杀
  • 2021-03-25 08:21
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯