java 复制一个输入流
时间: 2024-10-12 17:11:13 浏览: 15
Java实验五输入输出流
在Java中,如果要复制一个输入流并使其可重复使用,通常需要创建一个新的流来读取原始流的内容。这可以通过`InputStreamReader`和`BufferedReader`配合`CopyUtils`或者自定义循环读取的方式来实现。这里以`CopyUtils`为例[^2]:
```java
import java.io.*;
public class InputStreamCopyExample {
public static void main(String[] args) {
try (InputStream originalStream = new FileInputStream("source.txt");
InputStream copiedStream = copy(originalStream);
BufferedReader reader = new BufferedReader(new InputStreamReader(copiedStream))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); // 重复读取复制后的流
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static InputStream copy(InputStream in) throws IOException {
byte[] buffer = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
return out;
}
}
```
这段代码首先创建了一个原始输入流,然后通过`copy()`方法将其内容复制到`ByteArrayOutputStream`中,这样就得到了一个可重复使用的流。
阅读全文