Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.java > #9107

Re: Leggere lo stesso file TANTE volte

From "Dr.UgoGagliardelli" <do.not.spam@me.please>
Newsgroups it.comp.java
Subject Re: Leggere lo stesso file TANTE volte
Date 2017-06-30 12:41 +0200
Organization Aioe.org NNTP Server
Message-ID <oj59tm$1uum$1@gioia.aioe.org> (permalink)
References <oj3lno$1c9h$1@gioia.aioe.org> <oj3olm$625$1@virtdiesel.mng.cu.mi.it> <oj4p6f$vsr$1@gioia.aioe.org>

Show all headers | View raw


Il 30.06.2017 07.56, Oliviero ha scritto:
>> Sinceramente pensavo che la tua fosse una domanda così banale da meritare
>> un laconico RTFM. In realtà non è così, in quanto sostanzialmente
>> BufferedReader sembrerebbe non essere pensato per un uso simile. In 
>> pratica,
>> hai due modi per ottenere quello che vuoi:
>>
>>   - Il primo è impostare sul BufferedReader un marcatore subito dopo 
>> averlo
>>     aperto, in modo tale che eseguendo un reset il puntatore ritorni a
>>     quell'area del file.
>>   - Il secondo è usare un RandomAccessFile al posto del 
>> BufferedReader, che ti
>>     permette di fare un seek del puntatore all'inizio del file
>>
>> Enrico
> 
> Grazie della risposta.
> Come faccio a impostare il marcatore?
Qualsisi classe che estenda java.io.Reader, quindi anche BufferedReader, 
ha anche i metodi:
- boolean markSupported()
- public void mark(int limit)
- public void reset()
se markSupported() risponde true, allora puoi usare sia mark che reset.

Per utilizzare mark, devi specificare il limite fino a quando il mark 
sara' valido, facendo attenzione che se questo limite e' troppo grande, 
il reader allocara' un nuovo buffer grande almeno come il limite imposto.
Avrai fatto caso che limit e' di tipo int, quindi il buffer sara' al 
massimo grande Integer.MAX_INT, ma il file che stai leggendo potrebbe 
essere molto piu' grande, quindi l'operazione mark/reset allo scopo di 
riposizionare il reader all'inizio non avrebbe senso. Nel caso che il 
file sia di dimensioni contenute, allora potresti usare il codice:

File f=new File("C:/miofile.txt");
long length = f.length();
if (length <= Integer.MAX_VALUE) {
   int limit = (int) length;
   FileReader fileReader=new FileReader(f);
   reader=new BufferedReader(fileReader, limit);
   reader.mark(limit);
   ...
   // rileggo dall'inizio
   reader.reset();
   ...
}

Guardare la documentazione qui 
https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html e' 
comunque il miglior consiglio.

Back to it.comp.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Leggere lo stesso file TANTE volte Oliviero <abcxyz@micso.net> - 2017-06-29 21:51 +0200
  Re: Leggere lo stesso file TANTE volte Enrico Bianchi <enrico.bianchi@ymail.com> - 2017-06-29 20:41 +0000
    Re: Leggere lo stesso file TANTE volte Oliviero <abcxyz@micso.net> - 2017-06-30 07:56 +0200
      Re: Leggere lo stesso file TANTE volte Enrico Bianchi <enrico.bianchi@ymail.com> - 2017-06-30 06:55 +0000
      Re: Leggere lo stesso file TANTE volte "Dr.UgoGagliardelli" <do.not.spam@me.please> - 2017-06-30 12:41 +0200
  Re: Leggere lo stesso file TANTE volte 4ndre4 <a.laforgia@gmail.com> - 2017-06-29 14:06 -0700

csiph-web