Originariamente inviato da Mitele
salve ragazzi mi dite se riesco a leggere corretamente un array di byte?
Innanzitutto l'uso di BufferedInputStream sarebbe del tutto superfluo. Nel tuo ciclo stai già leggendo "a blocchi", non c'è altro di meglio che si possa fare e una bufferizzazione "di sotto" non migliorerebbe nulla (semmai sarebbe solo uno strato in più per cui passare).
E d'altronde la risorsa "finale" è un ByteArrayInputStream che ha già tutto in memoria.

Poi in genere il ciclo di lettura si fa (tipicamente) con una struttura diversa. E devi anche tenere presente una cosa. Tu leggi a blocchi di 9096 byte per volta. Se la dimensione del contenuto è di lunghezza multipla di 9096 byte, ad ogni lettura avresti il buffer sempre completamente pieno.
Ma non è detto che sia così! L'ultimo "chunk" (pezzetto) potrebbe essere di lunghezza inferiore, quindi l'ultima lettura riempirebbe solo parzialmente il buffer che verso la fine avrebbe "spazzatura" (ciò che è rimasto dalla lettura precedente). Ma tu con quel AllFile.add(buffer) usi sempre il buffer al completo. Ed è sbagliato.
Detto in altre parole, devi usare la lunghezza restituita da read per sapere quanto usare del buffer.