Запись больших файлов с использованием BufferedOutputStream

Я пытаюсь читать и записывать большие файлы (более 100 МБ), используя BufferedInputStream и BufferedOutputStream . У меня проблема с памятью кучи и исключение OOM.
Код выглядит так:

BufferedInputStream buffIn = new BufferedInputStream(iStream);
/** iStream is the InputStream object  **/

BufferedOutputStream buffOut=new BufferedOutputStream(new FileOutputStream(file));
byte []arr = new byte [1024 * 1024];
int available  = -1;
while((available = buffIn.read(arr)) > 0) {   
    buffOut.write(arr, 0, available); 
}      
buffOut.flush();
buffOut.close();        

Мой вопрос: когда мы используем BufferedOutputStreeam , удерживает ли он память до тех пор, пока не будет записан полный файл?
Как лучше всего записывать большие файлы с помощью BufferedOutputStream ?

5
задан Mr_and_Mrs_D 26 July 2013 в 22:27
поделиться