while(inStream.hasNextLine())
{
...
lineList.add(inStream.nextLine());
}
...
lineList是一個ArrayList。代碼正在讀取所有內容,除非它不會抓住最後一行。最後兩行文本文件結尾是這樣的:Java - 如何使用掃描儀獲得最後一行?
"a sentence here..."
<a blank line here. the blank line is the last line>
我假設它不會抓住它,因爲hasNextLine()這一項後,沒有檢測到另一條線路?
什麼是抓住最後一行的方法?我認爲閱讀,直到它是EOF,然後捕捉異常可能工作,但似乎沒有辦法做到這一點。
編輯:更多資訊
public void readLines()
{
lineList = new ArrayList();
try
{
inStream = new Scanner(new File(fileName));
}
catch(FileNotFoundException e)
{
System.out.println("Error opening the file. Try again.");
}
if (inStream != null)
{
while(inStream.hasNextLine())
{
++originalLines;
lineList.add(inStream.nextLine());
}
inStream.close();
}
}
有整個方法。哪裏不對了?
編輯:更多的信息
public static void main(String[] args)
{
Scanner inStream = null;
String test = "";
inStream = new Scanner(test);
while(inStream.hasNextLine())
{
System.out.println(inStream.nextLine());
}
}
它不會拿起一個空字符串,但它會拿起一個空格「」
我已將整個方法添加到我的OP中。你能檢查它嗎? – ShrimpCrackers 2010-04-18 03:24:06
方法對我來說很好。使用'wc -l'或十六進制編輯器等來查看文件真正包含的內容。做「如果我按右箭頭鍵它不會移動」測試是無用的,因爲它依賴於文本編輯器的行爲,而不是實際的文件包含。 – polygenelubricants 2010-04-18 03:30:01
謝謝。我的猜測是它不是一個分隔符,而是一個空字符串。如果我的猜測是正確的,我將如何拾取一個空字符串?查看上面添加的代碼。 – ShrimpCrackers 2010-04-18 03:43:40