问题描述
我在公共 API 中有一个“InputStream”作为输入。我需要读取输入流两次。有什么办法可以多次读取/处理 inputStream 吗?如果是,可能需要注意哪些事项?
public void doSomething(InputStream inputStream) {
doProcessInputStreamAPI_1 (inputStream)
doProcessInputStreamAPI_2 (inputStream)
}
我如何才能实现上述流程? doProcessInputStreamAPI_1 和 doProcessInputStreamAPI_2 是独立的,互不影响。
解决方法
如果输入流处理程序是独立的,它们可以被重构以处理从流中读取的数据:
public void doSomething(InputStream input) {
int x;
while ((x = input.read()) != -1) {
doProcessInputStreamAPI_1(x);
doProcessInputStreamAPI_2(x);
}
}