Cita: - qué estamos diciendo con lo que se encuentra entre paréntesis?
nombrefichero=new String(buffer,0,nbytes-2);
Esto significa que por ejemplo si el buffer tiene 10 char, el nombreFichero sera buffer[0] + buffer[1] + buffer[2].... + buffer[8];
El buffer le indica de donde va a coger los char, el 0 la posicion inicial y el nbytes-2 hace referencia a la posicion final.