Ciao a tutti ragazzi.
vi spiego:
la lettura da un file di testo "listautenti.txt" avviene solo se il file è composto da stringhe ordinate del tipo nome - cognome - anno - tag
es Paperone - De Paperoni - 1946 - soldi
Ma il compito d'esame mi richiede che il file accetti un numero >=0 di tag non definiti a priori.
In sintesi dovrei renderlo in grado di leggere un file di testo composto così:
Pico - De Paperis - 1965 - storia - geografia - paperopoli - scienze
Paperone - De Paperoni - 1946 - soldi
Gastone - Comesichiama - 1968
Il codice che ho scritto finora va in errore(noSuchFile) se il file non è formattato con un solo tag
mi potreste aiutare a risolvere il problema?
codice:
import java.util.ArrayList;import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class UtenteMain {
public static void main(String[] args) {
ArrayList<Utente>listaUtenti=new ArrayList<Utente>();
try{
//inizializzazione strumenti lettura
FileReader fr=new FileReader("listautenti.txt");
BufferedReader br=new BufferedReader(fr);
//lettura del file riga per riga
String rigaLetta = br.readLine( );
while(rigaLetta!=null)
{
StringTokenizer st=new StringTokenizer(rigaLetta, "-");
String nome=st.nextToken();
String cognome=st.nextToken();
String anno=st.nextToken();
String listaTag=st.nextToken();
try{
Utente temp=new Utente(nome,cognome,anno,listaTag);
listaUtenti.add(temp);
}
catch( NumberFormatException e )
{
System.out.println( "Errore DA DECIFRARE NEL CODICE: " + rigaLetta + "; record" );
}
rigaLetta = br.readLine( );
}
br.close( );
// stampa a video la lista completa (temporaneamente)
for ( Utente elementi: listaUtenti )
//if (elementi.nome.equalsIgnoreCase("Mario")) per fare una selezione sulla stampa
System.out.println(elementi.nome +" "+ elementi.cognome+ " "+ elementi.anno+" "+ elementi.listaTag);
}catch(FileNotFoundException e){
System.out.println("Errore -file non trovato");
}catch(IOException e){
System.out.println("Errore nella lettura file(corrotto)");
}
}
}