Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    posizionarsi su una linea

    ciao,
    esiste un metodo per spostarsi in una determinata linea dello stream senza dover leggere tutte le precedenti con il metodo readline?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: posizionarsi su una linea

    Originariamente inviato da __Aless#ndro###
    esiste un metodo per spostarsi in una determinata linea dello stream senza dover leggere tutte le precedenti con il metodo readline?
    No, non c'è. Detto in generale, se le righe sono di lunghezza diversa, come potresti sapere a priori l'offset nel file di una qualunque riga N??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao,
    le righe sono tutte della stessa lunghezza, ho un file formattato in una certa maniera

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da __Aless#ndro###
    le righe sono tutte della stessa lunghezza, ho un file formattato in una certa maniera
    Se le righe sono tutte di lunghezza uguale e conosci come è il newline (CR o CR+LF o LF) che ovviamente deve essere tale per tutte le righe, allora sì, un offset in teoria si potrebbe calcolare. Ho detto in teoria perché c'è un'altra questione: quale è il charset del file?? Se è un charset in cui per ogni carattere hai un numero fisso di byte es. 1 o 2 ecc.., allora è un conto. Se fosse UTF-8 o altri charset con codifica a lunghezza "variabile", ovviamente no, non puoi farlo in linea generale se non sai a priori cosa contiene il file.

    E quindi ammesso di poter calcolare un offset che sia valido/consistente, c'è ancora un'altra questione: con quale classe lo leggi? Non certo con gli InputStream e nemmeno con i Reader, in quando sono tutti ad accesso "sequenziale". Esiste RandomAccessFile che permette un accesso "casuale" ma c'è anche qui una questione: RandomAccessFile non ha alcuna nozione di "charset", insomma non tratta "caratteri" in un qualunque charset. Ha un metodo readLine() ok ma è limitato, in quanto stabilisce fisso 1 byte -> 1 char, pertanto va bene solo se il file è in un charset single-byte come ISO-8859-1 o ASCII, ad esempio.

    Se hai un file in ASCII o ISO-8859-1 e ti basta usare readLine() di RandomAccessFile, allora bene, usalo pure.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.