import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; public class InputStreamCloner { public static InputStream cloneInputStream(InputStream original) throws IOException { ByteArrayOutputStream outputStream = new ByteArrayOutpu...
1). 实现Cloneable接口并重写Object类中的clone()方法; 2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,代码如下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import j...
使用一个 1024 字节的缓冲区逐步读取原InputStream的内容,直到读取完成。 最后,将 ByteArrayOutputStream 中存储的内容转换成一个新的ByteArrayInputStream,你可以从这个新的流中再次读取同样的数据。 main方法: 我们模拟了从 FTP 下载文件的场景,创建了一个初步简单的InputStream。 调用cloneInputStream方法来克隆这个...
本文主要介绍Java中,使用ByteArrayOutputStream和ByteArrayInputStream、IOUtils.toBufferedInputStream复制克隆(clone)InputStream的几种方法,以及相关的示例代码。 原文地址:Java 复制克隆(clone)InputStream的方法及示例代码
本文主要介绍Java中,使用ByteArrayOutputStream和ByteArrayInputStream、IOUtils.toBufferedInputStream复制克隆(clone)InputStream的几种方法,以及相关的示例代码。 原文地址:Java 复制克隆(clone)InputStream的方法及示例代码 发布于 2021-07-26 19:31 Java javase ...
public class StreamOperateUtil { public static void main(String[] args) throws FileNotFoundException { InputStream input =newFileInputStream("c:\\test.txt");//InputStream input = httpconn.getInputStream();//这里可以写你获取到的流ByteArrayOutputStream baos=cloneInputStream(input);//打开两个新...
//InputStream input = httpconn.getInputStream(); //这里可以写你获取到的流 ByteArrayOutputStream baos = cloneInputStream(input); // 打开两个新的输入流 InputStream stream1 = new ByteArrayInputStream(baos.toByteArray()); InputStream stream2 = new ByteArrayInputStream(baos.toByteArray()); ...
例如,使用 ObjectOutputStream 和 ObjectInputStream 实现克隆: 代码语言:java AI代码解释 publicstaticObjectdeepClone(Objectobj)throwsIOException,ClassNotFoundException{ByteArrayOutputStreambos=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(bos);oos.writeObject(obj);oos.close();ByteArrayIn...
protected native Object clone() throwsCloneNotSupportedException; 仔细看,它是个native方法,native方法是由非java语言实现的(因为java本身无法直接对操作底层进行访问和操作,需要通过其他语言实现) 注释主要说明了3点: 克隆对象和原对象不是同一个对象,占用不同的内存地址 ...
.writeObject(obj);obs.close();//分配内存,写入原始对象,生成新对象ByteArrayInputStream ios=newByteArrayInputStream(out.toByteArray());ObjectInputStream ois=newObjectInputStream(ios);//返回生成的新对象cloneObj=(T)ois.readObject();ois.close();}catch(Exception e){e.printStackTrace();}returnclone...