Utenti collegati: 29 
 
it.comp.java
Il linguaggio Java di Sun

Indice messaggi | Invia un reply | Tutti i newsgroup | Cerca | Statistiche 



  Inviato da: Dr.UgoGagliardelli  Mostra tutti i messaggi di Dr.UgoGagliardelli
Titolo: Re: Leggere lo stesso file TANTE volte
Newsgroup: it.comp.java
Data: 30/06/2017
Ora: 12:41:29
Mostra headers
 
  Il 30.06.2017 07.56, Oliviero ha scritto:<br /> &gt;&gt; Sinceramente pensavo che la tua fosse una domanda cos&igrave; banale da meritare<br /> &gt;&gt; un laconico RTFM. In realt&agrave; non &egrave; cos&igrave;, in quanto sostanzialmente<br /> &gt;&gt; BufferedReader sembrerebbe non essere pensato per un uso simile. In <br /> &gt;&gt; pratica,<br /> &gt;&gt; hai due modi per ottenere quello che vuoi:<br /> &gt;&gt;<br /> &gt;&gt; - Il primo &egrave; impostare sul BufferedReader un marcatore subito dopo <br /> &gt;&gt; averlo<br /> &gt;&gt; aperto, in modo tale che eseguendo un reset il puntatore ritorni a<br /> &gt;&gt; quell'area del file.<br /> &gt;&gt; - Il secondo &egrave; usare un RandomAccessFile al posto del <br /> &gt;&gt; BufferedReader, che ti<br /> &gt;&gt; permette di fare un seek del puntatore all'inizio del file<br /> &gt;&gt;<br /> &gt;&gt; Enrico<br /> &gt; <br /> &gt; Grazie della risposta.<br /> &gt; Come faccio a impostare il marcatore?<br /> Qualsisi classe che estenda java.io.Reader, quindi anche BufferedReader, <br /> ha anche i metodi:<br /> - boolean markSupported()<br /> - public void mark(int limit)<br /> - public void reset()<br /> se markSupported() risponde true, allora puoi usare sia mark che reset.<br /> <br /> Per utilizzare mark, devi specificare il limite fino a quando il mark <br /> sara' valido, facendo attenzione che se questo limite e' troppo grande, <br /> il reader allocara' un nuovo buffer grande almeno come il limite imposto.<br /> Avrai fatto caso che limit e' di tipo int, quindi il buffer sara' al <br /> massimo grande Integer.MAX_INT, ma il file che stai leggendo potrebbe <br /> essere molto piu' grande, quindi l'operazione mark/reset allo scopo di <br /> riposizionare il reader all'inizio non avrebbe senso. Nel caso che il <br /> file sia di dimensioni contenute, allora potresti usare il codice:<br /> <br /> File f=new File(&quot;C:/miofile.txt&quot;);<br /> long length = f.length();<br /> if (length &lt;= Integer.MAX_VALUE) {<br /> int limit = (int) length;<br /> FileReader fileReader=new FileReader(f);<br /> reader=new BufferedReader(fileReader, limit);<br /> reader.mark(limit);<br /> ...<br /> // rileggo dall'inizio<br /> reader.reset();<br /> ...<br /> }<br /> <br /> Guardare la documentazione qui <br /> https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html e' <br /> comunque il miglior consiglio.  

Il thread:
da leggere Oliviero 29/06 21:51
Leggere lo stesso file TANTE volte
   da leggere Enrico Bianchi 29/06 22:41
Re: Leggere lo stesso file TANTE volte
      da leggere Oliviero 30/06 07:56
Re: Leggere lo stesso file TANTE volte
         da leggere Enrico Bianchi 30/06 08:55
Re: Leggere lo stesso file TANTE volte
         da leggere Dr.UgoGagliardelli 30/06 12:41
Re: Leggere lo stesso file TANTE volte
   da leggere 4ndre4 29/06 23:06
Re: Leggere lo stesso file TANTE volte
 

Invia una risposta:

Nome:

Email:

Titolo:

Testo:


Attenzione: l'invio del messaggio richiede diversi secondi.
Non premere pi� volte il tasto "Invia".

 © Sergio Simonetti 2001 Che cos'è Links