2013-07-16 49 views
7

的結束。如果我有這樣的事情在我的代碼:閱讀與BufferedReader類線,並檢查文件

String line = r.readLine(); //Where r is a bufferedReader 

如何避免碰撞,如果下一行是文件的結束? (即空)

我需要閱讀下一行,因爲可能有些東西需要處理,但是如果沒有代碼就會崩潰。

如果有什麼東西,那麼一切都可以,但我不能保證那裏會有東西。

所以,如果我做類似:(僞代碼):

if (r.readLine is null) 
//End code 

else {check line again and excecute code depending on what the next line is} 

我有這樣的問題是,當我對證空行,它已經移動到下一行,那麼我如何再次檢查它?

我還沒有找到辦法做到這一點 - 任何建議將是一個很大的幫助。

+1

真的希望人們在投票時留下一個理由。倒票應該表明問題有問題,所以也許可以重新格式化。向下投票,沒有理由爲什麼downvote已被投出幫助沒有人 – Zippy

回答

23

上午......你可以簡單地使用這樣的結構:

String line; 

while ((line = r.readLine()) != null) { 
    // do your stuff... 
} 
+4

當你回答第一,我會刪除我的:) – Azad

2

如果你想遍歷所有線路使用:

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

你可以故意有它把你的循環內的錯誤。即:

String s = ""; 
while (true) { 
    try { 
     s = r.readline(); 
    }catch(NullPointerException e) { 
     r.close(); 
     break; 
    } 
    //Do stuff with line 
} 

什麼其他人都傷心應該也工作。

+2

這可能是最壞的方式來做到這一點... – Raven

+0

@Raven爲什麼是它如此糟糕?我沒有看到它有什麼問題...... –

+0

這實際上會拋出'NullPointerException'嗎?我認爲你需要檢查'if(s == null)'。 –

1

您可以使用以下命令來檢查文件的結尾。

public bool isEOF(BufferedReader br) 
{ 
    boolean result; 

    try 
    { 
     result = br.ready(); 
    } 
    catch (IOException e) 
    { 
     System.err.println(e); 
    } 
    return result; 
}