2015-02-10 32 views
4

我正在處理讀取文本文件的程序。我必須爲文件的每一行執行一個單獨的方法。我可以做這樣的事情:對多行文本文件使用掃描儀

LineNumberReader myReader = new LineNumberReader(new FileReader("filename")); 

Scanner scanner = new Scanner(myReader.readLine()); 
while (scanner.hasNext()) { ... } 

並把後者兩條線在一個循環中,所以我可以解析每條線的標記。但我想知道是否有任何方法可以做到這一點,而無需在每次迭代中實例化一個新的掃描器對象。

+0

您可以直接使用'Scanner'類。 – 2015-02-10 05:54:19

回答

2

Java代碼來讀取每一行與一臺掃描儀:

Scanner myScanner = new Scanner(new File("filename")); 
while (myScanner.hasNextLine()) 
{ 
    String line = myScanner.nextLine(); 
    ... 
} 
1

您可以結合閱讀器和掃描儀,只是通過讀者進入掃描儀,然後循環

LineNumberReader myReader = new LineNumberReader(new FileReader("filename")); 

Scanner myScanner = new Scanner(myReader); // <== scanner uses Reader 
while (myScanner.hasNextLine()) { 
    String line = myScanner.nextLine(); 
} 
+0

我喜歡你的評論;) – MaxZoom 2015-02-10 20:29:09

0

@Max Zoome的例子是一個很好的方法,但它有一個問題,這個循環將會到infinite所以我建議你使用以下版本:

String line; 
while (myScanner.hasNextLine() && (line=myScanner.nextLine()!=null)) 
{ 
    // Do whatever you want to do 
} 

替代解決方案

當你想使用的BufferedReader是一個很好的方法來讀取文件line by line

由於Scanner用於從數據流中的內容解析令牌以及BufferedReader是​​並且Scanner不是。

FileReader in = new FileReader("yourFileName"); 
BufferedReader br = new BufferedReader(in); 

while ((line=br.readLine()) != null) { 
    System.out.println(line); 
} 
in.close();