Originariamente inviato da Mic82
Ciao a tutti!
Vi espongo il mio problema: ho la necessita di nevigare avanti e indietro per le righe di un file di testo. Premetto che utilizzo un BufferedReader e FileReader.
Ho pensato di utilizzare il metodo mark() e reset() ma il problema è che la mark riceve come parametro un'intero rappresentante un limite di byte di validità del mark stesso e il mio file è così grande che una volta scorso tutto, richiamando il metodo reset, mi da un errore di mark non più valido.
Qualcuno può aiutarmi?
Esistono metodi o classi in grado di farmi navigare avanti e indetro sul mio lunghiiiiisimo file di testo?
Hai diverse possibilità:
Potresti caricare tutte le righe in un array di String in modo da averle tutte a disposizione. Se ciò non fosse comodo (perché magari il file è troppo grosso), potresti usare la classe RandomAccessFile, fare prima una scansione di tutto il file con il metodo readLine() e creare un array di long che contiene gli offset di ogni riga. A quel punto con una seek() ti sposti e poi leggi la riga che vuoi.
Se scegli questa seconda soluzione, ti conviene incapsulare questa funzionalità in una classe specifica (es. RandomLineReader, tanto per fare una ipotesi).