Originariamente inviato da koaowner84
Il problema è che quando faccio la lettura della riga...non sempre ottengo i risultati sperati!
Ad esempio ottengo che la prossima riga è 998 byte... (cioè _l = 998), ma dopo la lettura:

codice:
 _byteread = _br.read(_buffer, 0, _l);
ottengo che il numero di byte letti effettivamente è diverso: ad esempio _byteread = 550!!
Specialmente quando il InputStream è relativo al networking (socket, ecc...) non è affatto detto che la read riempia tutto il buffer! Non c'è scritto da alcuna parte che deve riempire il buffer per quella lunghezza specificata.

È compito tuo usare il valore di ritorno della read, capire se ha letto tutto ed eventualmente rieseguire N altre volte la read per leggere il resto (e o accodare o sostituire ... dipende).

Oppure incapsuli il InputStream in un DataInputStream che ha il readFully, questo sì è garantito che riempie tutto il buffer a meno di: a) end-of-file (lancia EOFException) o b) errori di I/O (lancia IOException o più specifici).


P.S: available() raramente serve, e non dice quanti byte ci sono in tutto! (leggere il javadoc).