
Originariamente inviata da
LeleFT
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.
