Sto cercando di intercettare System.out e System.err, ma mantenere la possibilità di scrivere direttamente sui flussi originali quando necessario.Java: scrittura nel vero STDOUT dopo System.setOut
PrintStream ps = System.out;
System.setOut(new MyMagicPrintStream());
ps.println("foo");
Purtroppo, i dettagli della classe di implementazione del sistema significa che nel mio esempio, 'foo' viene inviato al MyMagicPrintStream instread del reale stdout. Qualcuno sa come ottenere riferimenti agli OutputStreams reali/originali.
Grazie!
PS: altrimenti si verificherà un errore StackOverflow < - per SEO.
(non sapevo si potesse fare!) Tuttavia, esiste un potenziale problema con questo approccio. Se qualche altra parte dell'applicazione utilizza l'oggetto System.out originale PrintStream, l'output su stdout dai due flussi potrebbe essere interlacciato casualmente. L'utilizzo di un oggetto flusso singolo sarà meno incline a questo. –
Penso che non lo farà perché PrintStream non ha buffer in modo che i dati dovrebbero arrivare direttamente allo stdout, giusto? – fqsxr
Sapevo che ci doveva essere un modo per ottenere il descrittore del file originale. Questo è perfetto. Grazie! – Jim