Effettivamente la faccenda non è delle migliori.
Ad ogni modo, la classe FileInputStream ti permette di leggere un blocco di N byte a partire da un offset specificato.
Quello che devi fare, a questo punto, è tenere traccia ad ogni lettura di qual è l'offset a cui sei arrivato a leggere. In questo modo, riesci a indirizzare esattamente la lettura del prossimo blocco di byte.
Esempio per capirci:
1) La prima volta apri il file e leggi tutto il suo contenuto (il metodo available() ti dice esattamente di quanti byte è composto il file).
2) Ti salvi il primo offset (ovvero il valore tornato da available()) in una variabile (chiamiamola offset).
3) Tutte le volte successive in cui dovrai leggere il file, comincerai a leggere a partire dal byte offset + 1, fino alla fine (available() - offset - 1) e aggiornerai la variabile offset con il nuovo valore restituito da available().
Spero di essere stato sufficientemente chiaro nell'esposizione.
Ciao.![]()