有没有办法设置流System.err,使写入它的所有内容都被忽略?(即丢弃而不输出)
cotxawn71#
System.setErr(new PrintStream(new OutputStream() { public void write(int b) { } }));
字符串
2fjabf4q2#
你可以使用System.setErr()给它一个给予不做任何事情的PrintStream。代码参见@dogbane的示例。
huwehgph3#
只需将Error设置为dommy implementation:
System.setErr(new PrintStream(new OutputStream() { @Override public void write(int arg0) throws IOException { // keep empty } }));
字符串你需要得到特别许可才能这么做。
RuntimePermission("setIO")
型
vmdwslir4#
您可以将err流重定向到/dev/null
/dev/null
OutputStream output = new FileOutputStream("/dev/null"); PrintStream nullOut = new PrintStream(output); System.setErr(nullOut);
z4bn682m5#
使用commons-io的NullOutputStream,只需:
System.setErr(new PrintStream(new NullOutputStream()));
b4wnujal6#
其他的答案都是正确的。我认为通过使用PrintStream类中的nullOutputStream()函数,可以更容易地理解正在发生的事情,并且开销更少。
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);
6条答案
按热度按时间cotxawn71#
字符串
2fjabf4q2#
你可以使用System.setErr()给它一个给予不做任何事情的PrintStream。
代码参见@dogbane的示例。
huwehgph3#
只需将Error设置为dommy implementation:
字符串
你需要得到特别许可才能这么做。
型
vmdwslir4#
您可以将err流重定向到
/dev/null
字符串
z4bn682m5#
使用commons-io的NullOutputStream,只需:
字符串
b4wnujal6#
其他的答案都是正确的。
我认为通过使用
PrintStream
类中的nullOutputStream()
函数,可以更容易地理解正在发生的事情,并且开销更少。字符串
如果要在以后恢复原始错误流,请在覆盖它之前保存它:
型