在現代Java(僅使用標準庫)中讀取標準輸入的所有直到將EOF讀入字節數組,最好不必自己提供該數組,最簡單的方法是什麼? stdin數據是二進制文件,不是來自文件。將所有標準輸入讀入Java字節數組
I.e.像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和使用一個固定大小的緩衝區。
感謝。非常瘋狂,像番石榴解決方案的東西不在主線stdlib。 – user2802683
原因不是因爲Java作者試圖阻止將東西讀入字節數組(它將會破壞足夠大的數據),因爲它可以/應該作爲流處理(它可以處理無限數量的數據)。 –