Esistono due scenari: scrittura e lettura
Scrittura :
Ogni volta che scrivo qualcosa sul ByteBuffer chiamando il suo metodo put(byte[])
la variabile position
viene incrementata come: current position + size of byte[]
e limit
rimane al massimo.
Se, tuttavia, inserisco i dati in un buffer di visualizzazione, dovrò, manualmente, calcolare e aggiornare il position
Prima chiamo il metodo write(ByteBuffer)
del canale per scrivere qualcosa, dovrò flip()
del Bytebuffer in modo che
position
punti a zero e limit
punti all'ultimo byte che è stato scritto sul ByteBuffer .
lettura :
Ogni volta che chiamo il metodo read(ByteBuffer)
di un canale per leggere qualcosa, la variabile position
rimane a 0 e la variabile limit
di ByteBuffer punta all'ultimo byte letto. Quindi, se ByteBuffer è inferiore al file letto, la variabile limit
viene trasferita a max
Ciò significa che ByteBuffer è già capovolto e posso procedere all'estrazione dei valori dal ByteBuffer.
Per favore, correggimi dove sono sbagliato :)