2013-10-18 205 views
0

我已成功讀取和寫入Java中的示例文本文件。但是,當我嘗試從文件中讀取數據時,它總是在到達文件末尾時引發NoSuchElementException。我修改了代碼以通過打印「達到文件結束」來捕獲此異常,但我想知道這是否正常;我不喜歡它,我覺得我失去了一些東西。Java - 讀取和寫入文本文件

任何幫助表示讚賞。這裏是我的代碼:

MyFileWriter.java

import java.io.*; 

public class MyFileWriter { 

    public static void main(String[] args) { 
     File file = new File("MyFile.txt"); 
     PrintWriter out = null; 

     try { 
     out = new PrintWriter(file); 
     out.write("This is a text file."); 
     } catch(IOException e) { 
     e.printStackTrace(); 
     System.out.println("IOException: " + e.getMessage()); 
     } finally { 
     out.flush(); 
     out.close(); 
     } 
    } 
} 

MyFileReader.java

import java.io.*; 
import java.util.*; 

public class MyFileReader { 
    public static void main(String[] args) { 

    File file = new File("MyFile.txt"); 
    Scanner scan = null; 

    try { 
     scan = new Scanner(file); 
     while(true) { 
      String next = scan.nextLine(); 
      if(next != null) { 
       System.out.println(next); 
      } 
      else { 
       break; 
      } 
     } 
    } catch(IOException e) { 
     e.printStackTrace(); 
     System.out.println("IOException: " + e.getMessage()); 
    } catch(NoSuchElementException e) { 
     System.out.println("***Reached end of file***"); 
    } finally { 
     scan.close(); 
    } 
    } 

}

+0

@clcto - 即修好了,謝謝!我知道這是類似的東西,但我無法把它放在手指上。自從我完成了I/O的工作以來已經有一段時間了。 – djmordigal

回答

7

,而不是在讀者while(true),使用while(scan.hasNextLine())