У меня есть вызов 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 в файл кусками, чтобы массив байтов никогда не превышал размер кучи?