如何在java中处理输入流两次

问题描述

我在公共 API 中有一个“InputStream”作为输入。我需要读取输入流两次。有什么办法可以多次读取/处理 inputStream 吗?如果是,可能需要注意哪些事项?

public void doSomething(InputStream inputStream) {

doProcessInputStreamAPI_1 (inputStream)
doProcessInputStreamAPI_2 (inputStream)

}

我如何才能实现上述流程? doProcessInputStreamAPI_1doProcessInputStreamAPI_2 是独立的,互不影响。

解决方法

如果输入流处理程序是独立的,它们可以被重构以处理从流中读取的数据:

public void doSomething(InputStream input) {

    int x;
    while ((x = input.read()) != -1) {
        doProcessInputStreamAPI_1(x);
        doProcessInputStreamAPI_2(x);
    }
}