Как записать потенциально огромный поток ввода в файл?

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

11
задан JoeLallouz 28 March 2012 в 15:23
поделиться