把一个ByteArrayInputStream复制给另一个ByteArrayInputStream
时间: 2024-09-28 18:16:39 浏览: 33
在Java中,如果你想要将一个`ByteArrayInputStream`的内容复制到另一个`ByteArrayInputStream`,你可以选择直接使用流的方式,不需要创建新的中间变量。这里是一个简单的例子:
```java
import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class ByteArrayInputStreamCopy {
public static void copy(InputStream source, InputStream destination) throws Exception {
byte[] buffer = new byte[4096]; // 或者你希望使用的任意大小的缓冲区
int bytesRead;
while ((bytesRead = source.read(buffer)) != -1) {
destination.write(buffer, 0, bytesRead);
}
destination.flush(); // 确保所有数据都被写入目标流
}
public static void main(String[] args) {
try {
// 创建原始输入流
byte[] bytes = {1, 2, 3, 4, 5};
ByteArrayInputStream sourceStream = new ByteArrayInputStream(bytes);
// 创建目标输入流
ByteArrayOutputStream destinationStream = new ByteArrayOutputStream();
// 调用copy方法进行复制
copy(sourceStream, destinationStream);
// 现在destinationStream包含了sourceStream的所有内容
System.out.println("Destination stream contents: " + destinationStream.toByteArray());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们通过循环读取`sourceStream`并写入`destinationStream`,直到源流结束。这种方法可以处理任意长度的数据。
阅读全文