Ler todas as entradas padrão em uma matriz de bytes Java
Qual é a maneira mais simples em Java moderno (usando apenas as bibliotecas padrão) para lertudo de entrada padrão até EOF em uma matriz de bytes, de preferência sem ter que fornecer essa matriz a si mesmo? Os dados stdin são coisas binárias e não vêm de um arquivo.
Ou seja algo como Ruby
foo = $stdin.read
A única solução parcial que pude pensar foi ao longo das linhas de
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);
... mas isso parece bizarramente detalhado até mesmo para Java e usa um buffer de tamanho fixo.