Copia de Java parte de InputStream a OutputStream

Tengo un archivo con 3236000 bytes y quiero leer 2936000 desde el inicio y escribir en un OutputStream

InputStream is = new FileInputStream(file1);
OutputStream os = new FileOutputStream(file2);

AFunctionToCopy(is,os,0,2936000); /* a function or sourcecode to write input stream 0to2936000 bytes */

Puedo leer y escribir byte a byte, pero creo que es lento (creo) de la lectura almacenada en búfer. ¿Cómo puedo copiarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta