|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 86
|
[java] utilizzo corretto delle funzioni Reset() e Mark()
Vi chiedo un consiglio su come poter impostare il corretto valore del metodo Mark(int val) per effettuare operazioni di skipping e rewinding (come in C per esempio) per la lettura binaria da file. Il file che vado a leggere presenta differenti tipi nativi di valori, i piu presenti sono i double, gli int e i float.Per esempio, nel caso io voglia iniziare a leggere dal byte numero 40, e poi per esempio se il suo valore fa parte di un certo range, leggerne uno 30 byte sopra, o ritornare addirittura a leggere lo stesso, come devo settare il metodo mark? mi piacerebbe capire meglio come giocare con queste due funzioni. Purtroppo debbo ammettere che dalla documentazione sun non riesco a capirci molto. nb: ci tengo a specificare che ho gia testato con successo se il buffer supporta queste operazione con il metodo markSupported(); Fede |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
[a] Leggo il byte 23 (ora il buffer punta al byte 24). [b] Il valore del byte letto mi dice che il prossimo byte da leggere è il 40; [c] Marco la posizione attuale indicando al buffer che deve mantenere valido il mark per i prossimi 17 byte (40-23=17). Codice:
buffer.mark(readLimit); // con 'readLimit' che vale 17 Codice:
buffer.skip(n); // con 'n' che vale 16 [f] Eseguo il reset (ora il buffer punta al byte 24). Sono tornato nella situazione da cui ero partito, al punto [a]. Questo è quello che proverei a fare io, dopo aver letto la documentazione di InputStream.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 08-04-2010 alle 17:13. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se puoi usa MappedByteBuffer per la lettura di dati binari da file. E' una specie di DataInput al nandrolone.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
In questo articolo puoi trovare un esempio e qualche spiegazione su come ottenere un MappedByteBuffer da un FileChannel che a sua volta si ottiene dai classici FileInputStream\FileOutputStream\RandomAccessFile; ne parla proprio nei priim paragrafi.
In pratica PGI-bis ti sta suggerendo di appoggiarti alle funzionalità fornite dal "New I\O" (che era veramente "new" nella versione 1.4) invece che appogiarti solamente a java.io.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:49.




















