我可以在Java中复制或拦截输出流吗?

Aug*_*ste 7 java outputstream

我想拦截标准输出流,然后将内容复制到另一个流,但我也希望保持标准输出流像原始.我可以用Java实现吗?

Avi*_*gal 6

您可以使用类似于TeeOutputStream此处所述的示例编写您自己的Java I/O流类

基本上你创建一个TeeOutputStream,给它你的流和当前的System.out然后使用System.setOut和新流.

写入System.out的任何内容都将写入原始的System.out以及您的流中,以便您可以随意执行任何操作

编辑:

Oracle取消了这个页面,也可以使用Apache Commons的TeeOutputStream来做同样的事情,而无需添加任何代码.