Обратите внимание, что урожай позволяет Вам делать вещи "ленивым" способом. Ленивым я подразумеваю, что оценка следующего элемента в IEnumberable не сделана, пока элемент на самом деле не требуют. Это позволяет Вам питание сделать несколько разных вещей. Каждый - это, Вы могли привести к бесконечно длинному списку без потребности на самом деле сделать бесконечные вычисления. Во-вторых, Вы могли возвратить перечисление функциональных приложений. Функции были бы только применены, когда Вы выполняете итерации через список.
Вариант ответа Джона, который компилируется и не требует использования Commons IO:
private static void pipeOutput(Process process) {
pipe(process.getErrorStream(), System.err);
pipe(process.getInputStream(), System.out);
}
private static void pipe(final InputStream src, final PrintStream dest) {
new Thread(new Runnable() {
public void run() {
try {
byte[] buffer = new byte[1024];
for (int n = 0; n != -1; n = src.read(buffer)) {
dest.write(buffer, 0, n);
}
} catch (IOException e) { // just exit
}
}
}).start();
}