2011-05-09 3 views
14

Есть ли способ установить поток System.err, чтобы все написанное на него игнорировалось? (т. е. отбрасывается не выводится)Disable System.err

ответ

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

Я нашел другой способ: System.err.close(); – elou

18

Вы можете использовать System.setErr(), чтобы дать ему PrintStream, который ничего не делает.

См. Пример @ dogbane для кода.

2

Вы можете перенаправить поток заблуждается в /dev/null

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

это * nix специфический, все же. – asgs

+1

Примечание: в Windows используйте «NUL:» вместо «/ dev/null». – dogbane

+0

/dev/null не существует в окнах (вы можете использовать NUL на них) –

4

Просто установить ошибки в dommy реализации:

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

Вы должны иметь специальное разрешение, чтобы сделать это.

RuntimePermission("setIO") 
Смежные вопросы