Liest alle Standardeingaben in ein Java-Byte-Array

Was ist der einfachste Weg in modernen Java (mit nur den Standard-Bibliotheken) zu lesenalle Standardeingabe bis EOF in ein Byte-Array, vorzugsweise ohne dieses Array selbst bereitstellen zu müssen? Die stdin-Daten sind Binärdaten und stammen nicht aus einer Datei.

Das heißt so etwas wie Ruby's

foo = $stdin.read

Die einzige Teillösung, an die ich denken konnte, war nach dem Muster von

byte[] buf = new byte[1000000];
int b;
int i = 0;

while (true) {
    b = System.in.read();
    if (b == -1)
        break;
    buf[i++] = (byte) b;
}

byte[] foo[i] = Arrays.copyOfRange(buf, 0, i);

... aber das scheint selbst für Java bizarr ausführlich zu sein und verwendet einen Puffer mit fester Größe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage