如何录制流

jef*_*ter 2 java

我需要记录从我的应用程序传递到另一个应用程序(在我的控制下)的数据流.

我想这样做来记录发送和接收的字节以进行集成测试.

我可以这样做:

void inputStreamToOutputStream(final InputStream inputStream, final OutputStream out) {
    Thread t = new Thread(new Runnable() {

        public void run() {
            try {
                int d;
                while ((d = inputStream.read()) != -1) {
                    out.write(d);
                    savedFile.write(d);
                }
            } catch (IOException ex) {
            }
        }
    });
    t.start();
}
Run Code Online (Sandbox Code Playgroud)

但感觉应该已经有了一个库来做到这一点.我可以看到Apache IOUtils有一种copy将两个流绑定在一起的方法:

IOUtils.copy(in, out);
Run Code Online (Sandbox Code Playgroud)

但这不会让我'记录'发送的字节.在我自己开始之前,有人可以建议一个像样的库吗?

Ale*_*øld 5

使用Apache Commons IO 的TeeOutputStream/TeeInputStream,您可以写入您的输出以及您的savedInFilesavedOutFile:

OutputStream teeOutput = new TeeOutputStream(out, savedOutFile);
InputStream teeInput = new TeeInputStream(input, savedInFile)
Run Code Online (Sandbox Code Playgroud)

然后您可以将T恤发送到您的应用程序进行读/写.