java 禁用系统.err

vi4fp9gy  于 2023-11-15  发布在  Java
关注(0)|答案(6)|浏览(114)

有没有办法设置流System.err,使写入它的所有内容都被忽略?(即丢弃而不输出)

cotxawn7

cotxawn71#

System.setErr(new PrintStream(new OutputStream() {
    public void write(int b) {
    }
}));

字符串

2fjabf4q

2fjabf4q2#

你可以使用System.setErr()给它一个给予不做任何事情的PrintStream。
代码参见@dogbane的示例。

huwehgph

huwehgph3#

只需将Error设置为dommy implementation:

System.setErr(new PrintStream(new OutputStream() {
            @Override
            public void write(int arg0) throws IOException {
                // keep empty
            }
        }));

字符串
你需要得到特别许可才能这么做。

RuntimePermission("setIO")

vmdwslir

vmdwslir4#

您可以将err流重定向到/dev/null

OutputStream output = new FileOutputStream("/dev/null");
PrintStream nullOut = new PrintStream(output);
System.setErr(nullOut);

字符串

z4bn682m

z4bn682m5#

使用commons-ioNullOutputStream,只需:

System.setErr(new PrintStream(new NullOutputStream()));

字符串

b4wnujal

b4wnujal6#

其他的答案都是正确的。
我认为通过使用PrintStream类中的nullOutputStream()函数,可以更容易地理解正在发生的事情,并且开销更少。

System.setErr(new PrintStream(PrintStream.nullOutputStream()));

字符串
如果要在以后恢复原始错误流,请在覆盖它之前保存它:

PrintStream origStream = System.err;
System.setErr(new PrintStream(PrintStream.nullOutputStream()));

// Do your Sutff here which is printing to System.err

System.setErr(origStream);

相关问题