2016-04-05 5 views
1

ファイルを作成し、テキストを追加してファイルを読み込む次のコードを記述しました。私の問題は、実行時に、内容はテキストファイルに追加されますが、ファイルの内容は画面に表示されません。Filereader.read()メソッドが動作しない

私のコードです

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){ } 
} 
} 

次のような出力:あなたの後

enter image description here

+5

このファイルからの読み取りを試みる前に、「Writer」を閉じるようにしてください。また、 'catch'ブロックにある可能性のある例外を無視しないでください。 – Berger

+3

プログラムの出力とファイルの内容はテキストです。テキストをスクリーンショットとして投稿しないでください。あなたの質問の中にテキストをテキストとして投稿してください。 – khelwood

+0

@Bergerは大変感謝しています!出来た。乾杯 – user3382203

答えて

2

:あなたのファイル(f1.write()を)書かれています。ファイルへの書き込みはバッファリングされているので、内容を読み込むときに内容は実際にはファイルにありません。あなたは、各文字が別々の行に印刷されることを意味し、各文字のためのprintln()を呼び出していることにも

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(); 
    } 
    } 

注、:私は、try-と資源構文を使用してライターを閉じてお勧めします。これは、あなたが望むものかもしれません。あるいは、代わりにprint()に電話したいかもしれません。

0

:テキストファイルで enter image description here

enter image description here

あなたはファイルから読み込む前に、ライターを閉じて、あるいは少なくともflushする必要が

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

文字入力ストリームの汎用リーダーであるBufferedReaderを使用してください。テキストファイルから

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

フラッシュを読んで、あなたのwriterを閉じて、あなたはまた、その内容を印刷するラインでファイル内容の行を読み取るためにBufferedReaderを使用することができますするための最良のオプションがあります。

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(); 
    } 
} 
関連する問題