我遇到了一種情況,在嘗試將輸入流轉換爲字節數組時出現內存異常。在較新的Android手機上,這沒有問題,但其中一些便宜的型號正在經歷它。這是我正在使用的方法。有沒有更有效的方法來做到這一點?Android將流轉換爲字節數組內存不足異常
public byte[] convertStreamToByteArray(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buff = new byte[1024];
int i = 0;
while ((i = is.read(buff, 0, buff.length)) > 0) {
baos.write(buff, 0, i);
}
return baos.toByteArray();
}
1)你真的需要將所有這些字節讀入內存嗎? 2)你可以確定輸入流的大小而不用全部讀入嗎? – JimmyB
請注意,'return baos.toByteArray();'將需要數據在內存中保存*兩次*,一次在baos中,一次在複製到底層數組的副本中。 – JimmyB
它會在此代碼的第一次使用或一段時間後出現。認爲這是一個流和密切。 closebale通常需要關閉,否則會發生資源泄漏。 –