我有一個API調用返回一個字節數組。我目前將結果串流到一個字節數組中,然後確保校驗和匹配,然後將ByteArrayOutputStream寫入File。代碼是這樣的,它工作得很好。如何編寫一個潛在的巨大InputStream文件?
String path = "file.txt";
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
FileOutputStream stream = new FileOutputStream(path);
stream.write(byteBuffer.toByteArray());
我關心我,從InputStream的結果可能會比Android的堆大小大,我能得到OutOfMemory異常如果整個字節數組是在內存中。將inputStream寫入塊中的最優雅的方式是什麼,這樣字節數組永遠不會超過堆大小?
您建議我的擔憂是無關緊要的嗎? – JoeLallouz 2012-03-28 15:27:07
只消除使用'ByteArrayOutputStream'。 (我讀錯了..我用它呢?) – 2012-03-28 15:27:12