volevo chiedervi se all'interno del Reader devo inserire tutto l'indirizzo(es: c:\\esercizi\prova.txt).
meglio altrimenti il file deve trovarsi nella directory da cui lanci java.
Inoltre "c:\\esercizi\prova.txt" da errore, perchè \ è un carattere di escape.
Invece "c:\\\\esercizi\\prova.txt" invece dovrebbe funzionare.
Cominciamo male... il nome della classe va con la lettera iniziale maiuscola!
while(in.ready())
{
buffer=in.readLine();
}
E questo cosa dovrebbe fare? Finché il file è pronto lo legge una riga alla volta, mette ogni riga nella variabile buffer e quindi quando esce dal while, in buffer avresti solo l'ultima riga letta..
Di solito si fa qualcosa del genere:
codice:
String riga;
while ( (riga=in.readLine())!=null )
{
// E qui fai quel che devi fare sulla riga
}
so cosa sia un array a 2 dimensioni
Sicuro? Questo è un possibile array bidimensionale di Stringhe: String [][] matrice;
Ti invito a leggere le api di Array. Avevi ottenuto una lista di stringhe..
Per semplificare le cose procederei con il memorizzare tutte le stringhe del file in un array monodimensionale di stringhe (String[] vettore)
All'interno del ciclo di while, inserisci nel vettore la stringa "riga" fornita dal BufferedReader.
Dai un'occhiata qui, per sicurezza.. http://java.sun.com/docs/books/tutor...ts/arrays.html
Quando avrai finito di leggere il file avrai un vettore di stringhe, ogni cella del vettore conterrà una riga del file. Con un contatore puoi memorizzare il numero di righe del file, e questo ti aiuta poi a creare la matrice bidimensionale della dimensione giusta.
Siccome non sai quante righe ha il file, puoi dare una dimensione "adeguata" al vettore iniziale, che ne so, 1000.
Se invece vuoi fare subito le cose in modo più dinamico, invece del vettore usa una ArrayList<String>, che per certi versi è anche più semplice. Ovviamente controlla le api.
Per finire:
codice:
BufferedReader br = null;
try
{
// apri lo stream
br = new BufferedReade(new FileReader(nomeFile));
// leggi il file
// popoli la matrice
}
catch (Exception e)
{
e.printStackTrace(); // Molto meglio di Systsem.out.println (e)
// Per il momento è meglio così, più avanti stamperai un tuo messaggio di errore
}
finally
{
// se br != null, chiudi lo stream.
// Trattandosi di uno stream in lettura, anche senza questa operazione
// non accade nulla di troppo fastidioso,
// ma se invece il file lo stessi scrivendo, diventa necessario.
}
Nota: non ti sto indicando l'algoritmo migliore e molti potranno darti indicazioni migliori. Tuttavia ritengo sia meglio se a forme di codice più evolute ci arrivi da solo, col tempo.