ciao !!

allora ho un problema con questa classe FileInputStream.

in pratica vorrei aprire uno stream e leggere con un ciclo il contenuto byte per byte, questo procedimento però per file molto grandi è abbastanza lento, vorrei velocizzare la cosa usando read(byte[] b)

questo è il ciclo attuale con read (byte)
codice:
 InputStream                 dIn = new FileInputStream(fileName);
        int                                     ch;
while ((ch = dIn.read()) >= 0)
        {
            sig.update((byte)ch);
            
        }
io vorrei fare una cosa del genere

codice:
 InputStream                 dIn = new FileInputStream(fileName);
        int                                     ch;
byte b[]=new byte[500];
while ((ch = dIn.read(b)) >= 0)
        {
            sig.update((byte[])b);
            
        }
il problema si verifica nel caso in cui "b" dopo la lettura non è riempito in tutti i 500 componenti , immaginiamo un ultima lettura di 400 byte ....
quando viene invocato il metodo update, dovrei ridimensionare l'array in base a quanti byte sono stati letti effettivamente, non posso mettere nemmeno un byte in più !!
non vorrei dover usare un array d'appoggio in cui copiare i primi "ch" byte !!