2011-05-09 10 views
14

C'è un modo per impostare lo stream System.err in modo che tutto ciò che viene scritto su di esso venga ignorato? (cioè scartato non emesso)Disabilita System.err

risposta

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

Ho trovato un altro modo: System.err.close(); – elou

18

È possibile utilizzare System.setErr() per assegnargli un PrintStream che non esegue nulla.

Vedere l'esempio di @ dogbane per il codice.

2

Si potrebbe reindirizzare il flusso err per /dev/null

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

questo è * nix specifico, però. – asgs

+1

Nota: su Windows, utilizzare "NUL:" invece di "/ dev/null". – dogbane

+0

/dev/null non esiste in Windows (è possibile utilizzare NULL su quelli però) –

4

errore Basta impostare a Dommy realizzazione:

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

È necessario disporre di un permesso speciale per farlo.

RuntimePermission("setIO")