只需滾動你自己的。根本沒有任何魔法。使用Apache's TeeOutputStream你基本上會使用下面的代碼。當然,使用Apache Commons I/O庫,您可以利用其他類,但有時很高興實際上爲自己寫點東西。 :)
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();
}
}
測試與上面的類具有以下
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();
}
將打印Hello World!Hello World!
。
(注:覆蓋close()
可以使用一些保健壽」 :)
I/O中的任何事情都不是微不足道的。即使它起初看起來如此。 –
這並沒有真正回答如何同時寫入所有人的問題。 – Ataraxia
@ZettaSuro「寫入寫入方法以遍歷所有這些寫入方法,寫入每個寫入方法。」你真的需要我爲你寫出for循環嗎? – Kevin