我想使用下面的代碼讀取圖像的字節數組,但它會引發內存不足異常。我評論了發生異常的位置。ByteArrayOutputStream拋出OutOfMemoryError
byte[] bBuffer = new byte[300000]; //
ByteArrayBuffer baf = new ByteArrayBuffer(300000);
int total = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try
{
int read = 0;
while ((dis.read(bBuffer, 0, bBuffer.length)) != -1) {
baos.write(bBuffer, 0, bBuffer.length); // Exception occurs here
Log.d("outputImageBytes", "Reading Image Bytes: " + bBuffer.length + " " + read++);
}
//baos.flush();
}
catch (Exception e)
{
Log.e("outputImageBytes", "Exception Occured while reading image bytes: " + e.getMessage());
e.getMessage();
}
在寫入'baos'時,您忽略了'dis.read(..)'的值。它返回讀取的實際字節數,現在你總是插入緩衝區的總長度。 – 2013-03-05 11:51:57
有點困惑,請問你能舉個例子嗎? :) – 2013-03-05 11:54:34