2011-05-09 4 views
14

Czy istnieje sposób ustawienia strumienia System.err, aby wszystko zapisane w nim było ignorowane? (tzn. odrzucony, nie wyprowadzony)Wyłączyć System.err

Odpowiedz

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

Znalazłem inny sposób: System.err.close(); – elou

18

Możesz użyć System.setErr(), aby nadać mu strumień Strumienia, który nic nie robi.

Zobacz przykład @ dogbane dla kodu.

2

Można przekierować strumień err do /dev/null

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

jest to jednak * specyficzne dla nix. – asgs

+1

Uwaga: W systemie Windows użyj "NUL:" zamiast "/ dev/null". – dogbane

+0

/dev/null nie istnieje w oknach (możesz użyć NUL na nich) –

4

Wystarczy ustawić błąd do dommy realizacji:

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

Trzeba mieć specjalne pozwolenie, aby to zrobić.

RuntimePermission("setIO")