我正在使用這段標準代碼,但它給出了內存不足。嘗試谷歌番石榴Bytestream.toArray,甚至IOUtils.toByteArray但沒有運氣。目的是獲取大型二進制文件的輸入流的長度,以進一步處理輸入流。還有一個使用文件系統的限制。Java獲取大輸入流的大小給出內存不足
byte[] data = new byte[4096];
while ((nRead = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
如果你打算在內存中保存大量數據(這通常不是一個好主意),那麼你需要大量的內存。要麼爲JVM提供更多內存,要麼提出更智能的設計。 – Kayaman
我在尋找更智能的設計:-)。一種選擇可能是將輸入流保存在文件系統上,但不幸的是我不能使用這個選項。我有一個約束,我需要計算輸入流的長度,然後對該輸入流執行某些操作。 – Gopal
如果你唯一的目標是找到總大小,那你爲什麼要把整個事情放在記憶中?您是否將您寫入緩衝區的數據保留以備後用? – litelite