PDA

Visualizza la versione completa : [JAVA] lettura di un file


userfra
02-10-2002, 17:17
Ciao a tutti, esiste in java un modo per individuare la riga all'interno di un file txt, associata per esempio a data=01/01/02, cioè quello che intendo fare e pressapoco così riuscire ad individuare all'interno del file txt questa riga praticamente la numero 4, ed tirar fuori solo la data che è presente nella riga!


Come si fa?

userfra
02-10-2002, 17:54
Questo programmino scaricato da internet permette di andare a leggere una linea di un file direttamente dalla tastiera

import prog1.io.Input;
import java.io.*;

public class KeyIn {

InputStreamReader isr;
BufferedReader br;

public void creaKeyInputStream () throws IOException{
isr=new InputStreamReader(System.in);
br = new BufferedReader(isr);
}

public void visualizzaRiga () throws IOException {
String riga;

riga=br.readLine();
System.out.println(riga);
}

public static void main (String[] argv) throws IOException {
KeyIn o=new KeyIn();

System.out.println("Inserisci una linea di testo");
System.out.flush();

o.creaKeyInputStream();
o.visualizzaRiga();
}
}


ecco io vorrei fare una cosa simile però impostando già la riga e il file dove andare a leggere questa riga, come posso fare?

pippo75
02-10-2002, 18:00
FileReader fr = new FileReader("path del file");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while(line!=null){
// operazioni per il controllo della riga
line = br.readLine();
}

userfra
03-10-2002, 11:08
Originariamente inviato da pippo75


FileReader fr = new FileReader("path del file");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while(line!=null){
// operazioni per il controllo della riga
line = br.readLine();
}


Quindi per specificare la riga?

pippo75
03-10-2002, 11:50
il codice legge riga per riga il file...
basta che all'interno ci metti un contatore delle righe lette e il gioco è fatto

userfra
03-10-2002, 12:04
Ok io ho definito una variabile int i=0; poi nel ciclo lo incrementata con i++

ecco il risultato è 6, ma per leggere la riga 5 come devo fare?

Senti poi, volevo chiedere un'altra cosa, nella riga è presente del testo che non mi serve per esempio provadel:01/10/02
ecco a me servirebbe solo la data, come devo fare?

nel frattempo...
grazie mille per l'aiuto che mi stai dando

userfra
03-10-2002, 12:24
ok per leggere la riga ci sono riuscito in questo modo cioè all'interno del ciclo while ho messo una condizione

if(i==4){
System.out.println(line);
}

mentre per togliere quei caratteri?

userfra
03-10-2002, 13:51
Come faccio a sostituire le lettere che sono nel file alla 5 riga cioè, provadel:, con degli spazi?

ghinz
03-10-2002, 14:34
Ci sono diversi modi per estrarre la data e dipende da diversi fattori:
- le righe che leggi sono a larghezza fissa? Cioè la data si trova sempre dal carattere X al carattere Y ed è sempre formattata allo stesso modo (giorno/mese/anno)?
- le righe contengono dati separati da delimitatore? Ad esempio "testo|testo|testo|01/02/03|testo|testo"?
In questi casi è semplice, basta usare il metodo String.substring() nel primo caso e la classe StringTokenizer nel secondo.

Se invece le date ti si presentano in posizioni casuali all'interno della riga ti devi scrivere un piccolo automa che le estragga:
Fai un ciclo che scandisce la stringa un carattere alla volta, ogni volta che incontri un numero o una barra accodi il carattere in una stringa d'appoggio fino ad ottenere la data completa. Devi gestire tutte le possibili casistiche che ti si possono presentare, ad esempio se la data non è completa ("12/3/"), è "inquinata" ("12/6hgdf/2002") etc. etc.
Ciao

Loading