有没有一种方法可以设置流System.err,使得所有写入该流的内容都被忽略?(即丢弃而不是输出)
System.setErr(new PrintStream(new OutputStream() {
public void write(int b) {
}
}));
只需将错误设置为虚拟实现:
System.setErr(new PrintStream(new OutputStream() {
@Override
public void write(int arg0) throws IOException {
// keep empty
}
}));
您需要特殊权限才能执行该操作。
RuntimePermission("setIO")
/dev/null
。OutputStream output = new FileOutputStream("/dev/null");
PrintStream nullOut = new PrintStream(output);
System.setErr(nullOut);
使用 commons-io 的 NullOutputStream,只需:
System.setErr(new PrintStream(new NullOutputStream()));
nullOutputStream()
函数从PrintStream
类中,可以更容易地理解发生了什么,减少了额外的开销。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);
System.setErr(..)
覆盖之前备份流PrintStream _err = System.err;
。之后可以使用System.setErr(_err)
进行恢复。问候,Éric。 - elou