2016-04-05 16 views
1

Ich habe den folgenden Code geschrieben, der eine Datei erstellt, fügt Text hinzu und liest dann die Datei. Mein Problem ist, dass bei der Ausführung der Inhalt der Datei nicht auf dem Bildschirm angezeigt wird, obwohl der Inhalt in der Textdatei hinzugefügt wird.Filereader.read() Methode funktioniert nicht

Im Anschluss an mein Code

import java.io.*; 
class prc4{ 
public static void main(String args[]){ 
try{ 
    File f = new File("C:\\Program Files\\Java\\jdk1.8.0_25\\bin\\file1.txt"); 
    if (f.createNewFile()){ 
     System.out.println("File is created!"); 
     }else{ 
     System.out.println("File already exists."); 
     } 
    FileWriter f1 = new FileWriter("file1.txt"); 
    f1.write("Hello World. This is a sample text file!"); 
    FileReader f2 = new FileReader("file1.txt"); 
    int x = f2.read(); 
    while(x != -1){ 
     System.out.println((char)x); 
     x = f2.read(); 
    } 
    f1.close(); 
    f2.close(); 
}catch(Exception e){ } 
} 
} 

Ausgang: enter image description here

enter image description here

In der Textdatei:

enter image description here

+5

Versuchen Sie, den 'Writer' zu schließen, bevor Sie versuchen, aus dieser Datei zu lesen. Ignorieren Sie auch nicht Ausnahmen, die Sie in Ihrem 'catch' Block haben. – Berger

+3

Programmausgabe und Dateiinhalte sind Text. Veröffentlichen Sie keinen Text als Screenshot. Posten Sie Text als Text innerhalb Ihrer Frage. – khelwood

+0

@Berger vielen Dank! Es funktionierte. Prost – user3382203

Antwort

2

Sie müssen schließen oder zumindest flush, der Schriftsteller, bevor Sie aus der Datei lesen: haben Sie Ihre Datei (f1.write()) geschrieben. Das Schreiben in Dateien ist gepuffert und daher sind die Inhalte nicht wirklich in der Datei vorhanden, wenn Sie daraus lesen. Ich empfehle Schließen der Schreiber mit einem Try-mit-Ressourcen Konstrukt:

try (FileWriter f1 = new FileWriter("file1.txt")) 
    { 
    f1.write("Hello World. This is a sample text file!"); 
    } 

try (FileReader f2 = new FileReader("file1.txt");) 
    { 
    int x = f2.read(); 
    while(x != -1){ 
     System.out.println((char)x); 
     x = f2.read(); 
    } 
    } 

Beachten Sie auch, dass Sie println() für jedes Zeichen fordern, was bedeutet, dass jedes Zeichen wird in einer separaten Zeile gedruckt werden. Dies kann sein, was Sie wollen, oder Sie möchten stattdessen print() anrufen.

0

Nachdem Sie

f1.close(); 
    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new FileReader("file1.txt")); 
     String line = reader.readLine(); 

     while (line!=null) { 
      System.out.println(line); 
      line = reader.readLine(); 
     } 

    } catch (IOException ioe) { 
     System.out.println(ioe.getMessage()); 
    } finally { 
     try { if (reader!=null) reader.close(); } catch (Exception e) {} 
    } 
0

Versuchen Sie, einen BufferedReader zu verwenden, der ein generisches Lesegerät für Zeicheneingabestream ist. Ist die beste Wahl von Text zu lesen Dateien

class prc4 { 
    public static void main(String args[]) { 
     try { 
      File f = new File(".\\file1.txt"); 
      if (f.createNewFile()) { 
       System.out.println("File is created!"); 
      } else { 
       System.out.println("File already exists."); 
      } 
      FileWriter f1 = new FileWriter(".\\file1.txt"); 
      f1.write("Hello World. This is a sample text file!"); 
      FileReader f2 = new FileReader(".\\file1.txt"); 
      BufferedReader br = new BufferedReader(f2); 
      String s; 
      while((s = br.readLine()) != null) { 
       System.out.println(s); 
      } 
      br.close(); 
      f1.close(); 
      f2.close(); 
     } catch (Exception e) { 
     } 
    } 
} 
1

Flush und schließen Sie Ihre writer und Sie auch eine BufferedReader können den Inhalt der Datei Zeile für Zeile zu lesen, um seinen Inhalt zu drucken.

public static void main(String args[]){ 
    try{ 
     File f = new File("file1.txt"); 
     if (f.createNewFile()){ 
      System.out.println("File is created!"); 
     }else{ 
      System.out.println("File already exists."); 
     } 
     FileWriter f1 = new FileWriter(f); 
     f1.write("Hello World. This is a sample text file!"); 
     f1.flush(); 
     f1.close(); 

     FileReader f2 = new FileReader(f); 
     BufferedReader reader = null; 
     try { 
      reader = new BufferedReader(f2); 
      String l = reader.readLine(); 

      while (l!=null) { 
       System.out.println(l); 
       l = reader.readLine(); 
      } 

     }finally { 
      try { 
       if (reader!=null) 
        reader.close(); 
      } catch (Exception e) { 
       // Do nothing 
      } 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
}