Просто сканируй свой. Нет никакой магии. Используя TeeOutputStream Apache , вы в основном используете код ниже. Конечно, используя библиотеку ввода / вывода Apache Commons, вы можете использовать другие классы, но иногда приятно на самом деле писать что-то для себя. :)
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 {
try {
out.close();
} finally {
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()
может использовать некоторую осторожность:
Вы можете использовать closeMenuOnSelect
из react-select
для достижения этой цели.
<Select
isMulti
name="colors"
closeMenuOnSelect={false}
options={options}
className="basic-multi-select"
classNamePrefix="select"
/>
Вы можете увидеть демо здесь