2017-04-19 4 views
0

J'ai l'exemple d'application suivante dans laquelle j'écris dans un fichier et immédiatement après la fermeture du script, j'essaie de lire le fichier mais à ma grande surprise rien n'est écrit dans le fichier.BufferedWriter n'écrit pas dans un fichier après le vidage et se ferme

Je me suis assuré que les méthodes flush() et close() sont invoquées avant de lire le fichier mais même cela ne m'aide pas ici. Est-ce que quelqu'un peut m'aider à comprendre pourquoi le code suivant ne fonctionne pas?

public class TestWrite_Read { 

private File file; 
private Writer writer; 

public TestWrite_Read() { 
    file = new File("E:\\temp\\test.txt"); 
    try { 
     writer = new BufferedWriter(new FileWriter(file)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] args) throws Exception { 
    new TestWrite_Read().write(); 
    new TestWrite_Read().read(); 
} 

private void read() throws Exception { 
    BufferedReader reader = new BufferedReader(new FileReader(file)); 
    System.out.println("reader.readLine() = " + reader.readLine()); 
    reader.close(); 
} 

private void write() throws Exception { 
    writer.write(String.valueOf(104)); 
    writer.flush(); 
    writer.close(); 
}} 

Répondre

1

Chaque fois que vous créez un nouveau TestWrite_Read() vous ouvrez le fichier pour la sortie, qui la vide.

Ne faites pas cela. Si vous voulez simplement lire à partir du fichier, ne l'ouvrez pas pour la sortie d'abord.