Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| Path | csiph.com!news.redatomik.org!aioe.org!.POSTED!not-for-mail |
|---|---|
| From | "Dr.UgoGagliardelli" <do.not.spam@me.please> |
| Newsgroups | it.comp.java |
| Subject | Re: Leggere lo stesso file TANTE volte |
| Date | Fri, 30 Jun 2017 12:41:29 +0200 |
| Organization | Aioe.org NNTP Server |
| Lines | 51 |
| 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> |
| NNTP-Posting-Host | EKOb9gxv6vG08agtW1ZOBA.user.gioia.aioe.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 8bit |
| X-Complaints-To | abuse@aioe.org |
| User-Agent | Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 |
| Content-Language | it-IT |
| X-Notice | Filtered by postfilter v. 0.8.2 |
| X-Antivirus-Status | Clean |
| X-Antivirus | Avast (VPS 170629-0, 29/06/2017), Outbound message |
| Xref | csiph.com it.comp.java:9107 |
Show key headers only | 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 | Next — Previous in thread | Next in thread | Find similar
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