[JAVA] Lettura di un file testo
Buonasera, ho ripreso in mano Java dopo parecchio tempo e vorrei chiedere qualche consiglio riguardo la lettura di file testo.
Diciamo che mi piacerebbe poter leggere il file riga per riga ed eventualmente compiere delle operazioni sulla riga in base ad una condizione ( nel codice sotto controllo se la riga è diversa da una stringa data ed eventualmente la stampo).
Il programma sembra funzionare, ma volevo chiedere se è effettivamente corretto e va bene così, oppure c'è qualcosa che non va...
Grazie in anticipo!
Diciamo che mi piacerebbe poter leggere il file riga per riga ed eventualmente compiere delle operazioni sulla riga in base ad una condizione ( nel codice sotto controllo se la riga è diversa da una stringa data ed eventualmente la stampo).
Il programma sembra funzionare, ma volevo chiedere se è effettivamente corretto e va bene così, oppure c'è qualcosa che non va...
Grazie in anticipo!
public static void main(String[] args) { File name = new File("/home/sergio/file"); if (name.isFile()) { try { BufferedReader input = new BufferedReader(new FileReader(name)); String text; while ((text = input.readLine()) != null) if(!text.equals("import java.io.File;")) System.out.println(text); } catch (IOException ioException) { } } else System.out.println("Errore nell'apertura del file:"+name); }
Risposte
Diciamo che lasciare il blocco catch vuoto è una pessima pratica. Per leggere righe potresti anche utilizzare la classe Scanner.
Per quanto riguarda l'if-else, tu controlli che il percorso che passi sia un file e se non lo è stampi "errore in apertura del file", ma di fatto non c'è nessun errore e nessuna apertura di file, il messaggio appropriato potrebbe essere "il percorso specificato non fa riferimento ad un file".
Per quanto riguarda l'if-else, tu controlli che il percorso che passi sia un file e se non lo è stampi "errore in apertura del file", ma di fatto non c'è nessun errore e nessuna apertura di file, il messaggio appropriato potrebbe essere "il percorso specificato non fa riferimento ad un file".
Grazie per la risposta 
Si, la System.out.println era messa li tanto per, non la utilizzerei come messaggio d'errore
Quel che mi interessa invece è il blocco catch...
Dovrei stampare a video che la lettura non è andata a buon fine?

Si, la System.out.println era messa li tanto per, non la utilizzerei come messaggio d'errore

Quel che mi interessa invece è il blocco catch...
Dovrei stampare a video che la lettura non è andata a buon fine?
Si, più che altro è un errore di IO. Non si lascia mai il catch vuoto perchè se si verifica un errore in esecuzione e l'eccezione viene sollevata tu la catchi però non fai nulla e neanche te ne accorgi. In pratica il programma non funziona e non hai la minima idea del perchè
.
Per manipolare file in maniera più semplice c'è la classe FileUtils di apache-commons che permette di leggere e scrivere file molto più velocemente senza doversi preoccupare degli stream.

Per manipolare file in maniera più semplice c'è la classe FileUtils di apache-commons che permette di leggere e scrivere file molto più velocemente senza doversi preoccupare degli stream.
Grazie, non conoscevo affatto quella classe, devo leggermi qualcosa al riguardo
