当数据流从我的应用程序传递到另一个应用程序(都在我的控制下)时,我需要记录数据流。
我想这样做以记录发送和接收的字节以进行集成测试。
我可以做这样的事情:
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,您可以写入输出以及savedInFile
和savedOutFile
:
OutputStream teeOutput = new TeeOutputStream(out, savedOutFile);
InputStream teeInput = new TeeInputStream(input, savedInFile)
然后您可以将T恤发送到进行读取/写入的应用程序中。
关于java - 如何录制流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13573395/