我遇到了一种情况,在尝试将输入流转换为字节数组时出现内存异常。在较新的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通常需要关闭,否则会发生资源泄漏。 –