No, nel tuo codice il file viene chiuso DOPO che hai già cercato di leggerlo: il primo blocco try/catch racchiude al suo interno anche la lettura.
Prova a vedere questo:
codice:import java.io.*; public class Main1 { public static void main (String[]args){ File file1 = new File("prova.txt"); boolean leggi = false; FileWriter fw = null; BufferedWriter scrittore = null; try{ fw = new FileWriter( file1 ); scrittore = new BufferedWriter( fw ); scrittore.write("ciao"); scrittore.newLine(); scrittore.write("a tutti"); scrittore.flush(); leggi = true; // Indico al programma che la scrittura è andata a buon fine } catch (Exception e) { e.printStackTrace(); } finally { // Qui viene fatta la chiusura di tutti gli oggetti di scrittura if (scrittore != null) { try { scrittore.close(); } catch (Exception e) { /* Inutile stampare lo stackTrace qui */ } } else { if (fw != null) { try { fw.close(); } catch (Exception e) { } } } } if ( leggi ) { // Posso leggere perchè la scrittura è andata a buon fine FileReader fr = null; BufferedReader lettore = null; String frase=null; try { fr = new FileReader( file1 ); lettore = new BufferedReader( fr ); while((frase=lettore.readLine()) != null) { System.out.println( frase ); } } catch(IOException e){ e.printStackTrace(); } finally { if (lettore != null) { try { lettore.close(); } catch (Exception e) { } } else { if (fr != null) { try { fr.close(); } catch (Exception e) { } } } } } } }
Ciao.![]()



Rispondi quotando