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

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

我可以做这样的事情:

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();
}


但是感觉应该已经有一个图书馆可以做到这一点。我可以看到Apache IOUtils具有copy方法将两个流绑定在一起:

IOUtils.copy(in, out);


但这不能让我“记录”发送的字节。在我自己滚动之前,谁能建议一个已经做到这一点的体面的图书馆?

最佳答案

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

OutputStream teeOutput = new TeeOutputStream(out, savedOutFile);
InputStream teeInput = new TeeInputStream(input, savedInFile)


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

关于java - 如何录制流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13573395/

10-09 21:06