Piccolo suggerimento per quando si ha a che fare con l'apertura (per lettura/scrittura) di file. Questa è la procedura corretta del trattamento di questa situazione:
	codice:
	// Dichiarazione di tutti gli oggetti che andranno usati
// e loro inizializzazione a null
...
try {
   ...   // Inizializzazione ed uso degli oggetti
} catch (Exception e) {
   ...   // Cattura di eventuali eccezioni
} finally {
   ...   // Test di corretta inizializzazione e chiusura delle risorse,
   ...   // in ordine inverso rispetto all'inizializzazione
}
 
Esempio di trattamento della scrittura di un file di testo, con bufferizzazione:
	codice:
	// Dichiaro tutti gli oggetti che userò e li inizializzo a null
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter pw = null;
try {
   // Inizializzo e uso gli oggetti
   fw = new FileWriter("pippo.txt");
   bw = new BufferedWriter( fw );
   pw = new PrintWriter( bw );
   // Scrivo sul file
   pw.println("Ci scrivo tutto quello che voglio");
   // Flush dei dati
   pw.flush();
} catch (Exception e) {
   // Catturo eventuali eccezioni
   e.printStackTrace();
} finally {
   // Verifico che tutto sia stato inizializzato
   // e chiudo, in ordine inverso rispetto all'inizializzazione
   if (pw != null) {
      try { pw.close(); } catch (Exception e) { }
   } else {
      if (bw != null) {
         try { bw.close(); } catch (Exception e) { }
      } else {
         if (fw != null) {
            try { fw.close(); } catch (Exception e) { }
         }
      }
   }
}
 
Nota: l'ultimo oggetto che viene inizializzato è il primo ad essere controllato. Se questo è diverso da null, allora chiudo solo quello in quanto tutte le altre chiusure vengono fatte a catena automaticamente. Ovvero, se "pw" è inizializzato, allora sono per forza di cose inizializzati anche "bw" (visto che l'ho usato per costruire "pw") e "fw", visto che l'ho usato per costruire "bw". Chiudendo "pw", automaticamente vengono chiusi anche "bw" e "fw".
Nota2: le chiusure vanno sempre fatte nel blocco finally, in modo da garantire che queste vengano effettivamente fatte sempre (anche in caso di eccezione).
Ciao. 