di solito si usa un array di byte grande a piacere e decidi se fartelo riempire tutto o quanto vuoi tu, qualcosa tipo

byte[] buff=new byte[4096];
stream.read(buff); //riempe tutti i 4 kb
stream.read(buff,0,2048); //riempe i primi 2 kb

e così via