PDA

View Full Version : [Java]Posizionarsi all'inizio di un file di testo


Dyd87
23-07-2009, 10:50
Salve
Dovrei posizionarmi all'inizio di un file di testo , operazione realizzabile in C con la FGETS.
Equivalenti in Java ne conoscete?

Grazie mille
Saluti :)

banryu79
23-07-2009, 11:34
La fgets(...) del C, se non ricordo male, viene usata per leggere una riga da uno stream di un file, tu perņ parli di posizionamento all'interno di uno stream di un file e questo mi ricorda i file descritptor...

Passando a Java la prospettiva per lavorare con i file di testo si aza di livello.
Forse č meglio se ci racconti tutta la storia: cosa devi fare?
Copiare un file di testo? Copiarne solo una parte?

Le calssi che possono esserti utili, in ogni caso, sono quelle del package java.io ;)

@EDIT:
in alcuni casi potrebbe essere utile utilizzare uno Scanner (java.util.Scanner): tutto dipende da cosa devi fare.

@ARI-EDIT:
in questa discusisone (http://www.hwupgrade.it/forum/showthread.php?t=2012349) puoi trovare qualche spunto sul parsing di file di testo riga per riga

Dyd87
23-07-2009, 11:40
Grazie innanzitutto per la risposta :)
Dovrei "semplicemente" posizionarmi all'inizio di un file dopo averlo scorso tutto o in parte , senza dover per forza chiuderlo e riaprirlo.

banryu79
23-07-2009, 11:46
Allora dovresti maneggiarlo sottoforma di java.io.FileReader (http://java.sun.com/javase/6/docs/api/java/io/FileReader.html) e con il metodo reset (vedi documentazione) ti riporti all'ultima pozione "marcata" o, in caso non ne sia stata marcata nessuna esplicitamente, all'inizio del file.

FileReader si usa per leggere stream di caratteri (file di testo), FileInputStream per leggere stream di byte.

banryu79
23-07-2009, 11:52
Fermo ti ho dato un consiglio sub ottimale :)

Usa java.io.BufferedReader costruendolo passandogli come argomento il java.io.FileReader.

In questo modo avrai a disposizione anche il comodo metodo readLine, e lo stream sottostante č bufferizzato.

Esempio:

Reader reader = new BufferedReader(new FileReader("myTextFile.txt"));

// read a single line
String line = reader.readline();
...

// reset
reader.reset();

Dyd87
23-07-2009, 11:56
Grazie mille :)