我編寫了一個程序,我使用Scanner從日誌文件讀取行並解析每行以找到重要的內容。我閱讀日誌文件的每一行非常重要。我寫了下面這段代碼來掃描每一行java.util.Scanner在讀取大文件時出現故障
Scanner s = new Scanner(new File("Large.log"));
while(s.hasNextLine())
{
String line = s.nextLine();
//do the processing of the log line
}
上面的代碼表現得很怪異。它會在隨機數行(大約100萬行後)後停止讀取行。我修改了上面的代碼來檢查最後一行讀取,並使用Notepad ++檢查了日誌文件。在特定行之後的文件中還有很多行。在while
循環結束後,我添加了另一個System.out.println(s.hasNextLine())
,它打印爲false。
但是,如果我嘗試使用BufferedReader
來執行上述操作,則該程序可以正常工作。 Java中的util IO類有任何限制嗎?
當你使用BufferedReader時,你使用的是readLine()還是read()?還有最後一行是隨機讀取的還是固定的,或者是通過打印輸出到文件或屏幕確定的「隨機行數」? – 2011-02-13 06:32:30
我使用了相同的readLine。最後一行是隨機的。讀取的行數是隨機的。 – 2011-02-13 06:40:47