Estoy intentando leer y escribir archivos de gran tamaño (más de 100 MB) usando BufferedInputStream
& BufferedOutputStream
. Obtengo el problema de Heap Memory & excepción de OOM.
El código es el siguiente:Escribiendo archivos de gran tamaño usando BufferedOutputStream
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();
Mi pregunta es cuando usamos el BufferedOutputStreeam
es que la celebración de la memoria hasta que el archivo completo se escribe?
¿Cuál es la mejor manera de escribir archivos grandes usando BufferedOutputStream
?
intente vaciar dentro del circuito –
está almacenado en el buffer hasta que lo lave. enjuague en el ciclo while. –
@jcomeau_ictx - no, BufferedOutputStream no se almacena en búfer hasta que lo vacía, sino que tiene un tamaño de búfer interno fijo. – jtahlborn