"关闭"输出流

Oak*_*Oak 12 java output-redirect printstream

我正在使用一个任性的库,不幸的是,它会System.out(或偶尔System.err)打印信息.防止这种情况最简单的方法是什么?

我一直在考虑创建一个输出流到内存,替换,System.outerr在每次调用其中一个故障排除方法之前,稍后恢复它们,然后忽略创建的流的缓冲区.有更简单,更优雅的方式吗?

编辑:我不想重定向所有输出 - 这很容易实现.我只想忽略某些库调用可能产生的输出.

Oak*_*Oak 16

我最终做了类似的事情:

PrintStream out = System.out;
System.setOut(new PrintStream(new OutputStream() {
    @Override public void write(int b) throws IOException {}
}));
try {
    <library call>
} finally {
    System.setOut(out);
}
Run Code Online (Sandbox Code Playgroud)

感谢AlexR和堆叠器将我重定向到这个简短的解决方案.