我有一个返回字节数组的 API 调用。我目前将结果流式传输到一个字节数组中,然后确保校验和匹配,然后将 ByteArrayOutputStream 写入文件。代码是这样的,它工作得很好。
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());
我担心输入流的结果可能大于 android 中的堆大小,如果整个字节数组都在内存中,我可能会得到 OutOfMemory 异常。将 inputStream 分块写入文件的最优雅方法是什么,这样字节数组永远不会大于堆大小?