最新の Java (標準ライブラリのみを使用) で、できればその配列自体を提供することなく、EOF までのすべての標準入力をバイト配列に読み取る最も簡単な方法は何ですか? stdin データはバイナリ データであり、ファイルからのものではありません。
つまりRubyのようなもの
foo = $stdin.read
私が考えることができた唯一の部分的な解決策は、
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);
...しかし、それはJavaでも奇妙に冗長に見え、固定サイズのバッファを使用します。