Solo hazlo por ti mismo. No hay magia en absoluto. Usando Apache's TeeOutputStream básicamente usarías el siguiente código. Por supuesto, utilizando la biblioteca de E/S de Apache Commons puede aprovechar otras clases, pero a veces es bueno en realidad escribe algo para usted. :)
public final class TeeOutputStream extends OutputStream {
private final OutputStream out;
private final OutputStream tee;
public TeeOutputStream(OutputStream out, OutputStream tee) {
if (out == null)
throw new NullPointerException();
else if (tee == null)
throw new NullPointerException();
this.out = out;
this.tee = tee;
}
@Override
public void write(int b) throws IOException {
out.write(b);
tee.write(b);
}
@Override
public void write(byte[] b) throws IOException {
out.write(b);
tee.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
out.write(b, off, len);
tee.write(b, off, len);
}
@Override
public void flush() throws IOException {
out.flush();
tee.flush();
}
@Override
public void close() throws IOException {
out.close();
tee.close();
}
}
Prueba con la clase anterior con la siguiente
public static void main(String[] args) throws IOException {
TeeOutputStream out = new TeeOutputStream(System.out, System.out);
out.write("Hello world!".getBytes());
out.flush();
out.close();
}
imprimiría Hello World!Hello World!
.
(Nota: el close()
anulado podría utilizar algún tipo de atención aunque' :)
Nada en I/O es trivial. Incluso si parece tan al principio. –
Esto realmente no responde la pregunta de cómo escribir en todos ellos simultáneamente. – Ataraxia
@ZettaSuro "escribe el método de escritura para recorrer todos ellos, escribiendo a cada uno". ¿Realmente necesitas que escriba el ciclo 'for' para ti? – Kevin