2015-01-14 74 views
-1

嗨我正在尋求獲得一些幫助,跳過null行,我已經搜索了答案,但我無法找到任何。這是我正在嘗試使用的代碼:如何跳過java中的空行?

BufferedReader in = new BufferedReader(new FileReader(newest)); 
    String line = ""; 
    while (true) { 
     if ((line = in.readLine()) == null) { 
+2

你是什麼意思的「空」行?一個空行''「'或者包含單詞'」null「'的行或者readLine返回'null'的行? – EWit

+0

空行且沒有空行的行 – Austin

+0

我可能會犯錯,但'readLine'只在流結束時返回'null'。在這種情況下,你不能簡單地「跳過」它,因爲沒有進一步的輸入。 – EWit

回答

0

行不會爲空,它們可能只是空的。我會做的是檢查它是否是空的:

if ((line = in.readLine()) != null) { 
    line = line.trim(); 

    if (line.isEmpty()) { 
    } 
} 
+1

最好先檢查null,然後調用行上的trim()來移除空格,然後調用'isEmpty()'來檢查是否沒有文本。 –

+0

我修好了,希望現在好了... –

+0

不應該你的第一條if語句而不是?如果返回null,則已到達流的末尾。 – JamesB

1

我希望的代碼看起來像這樣:

String line; 
while ((line=in.readLine())!=null) { 
    if (!line.isEmpty()) { 
     // do stuff 
    } 
} 

一般情況下我trim前檢查每一行,如果它是空的,但是你說你想排除「一條空白的行,沒有空格」,這意味着你想要包括只是空間的行。

如果想跳過都是空白行,你可以這樣做:

String line; 
while ((line=in.readLine())!=null) { 
    if (!line.trim().isEmpty()) { 
     // do stuff 
    } 
} 

while條件的一點是,BufferedReader將返回null當輸入完成後,使這應該觸發循環的結束。

+0

這更像是它 – JamesB

0

從這個流中讀取數據時,只會在數據流結尾處遇到null(在這種情況下爲文件)。如果您正在查找空白/空白字符串,則該測試位於循環內(如下所示)。

請注意,String.trim()不會修剪對象本身,它會返回修剪後的String。通常應該使用Equals方法來測試Object(如String)是否相等。

BufferedReader in = new BufferedReader(new FileReader(newest)); 
String line = ""; 

//Line below keeps looping while the reader return a valid line of text. 
//If the end of stream (file in this case) has been reached, you'll get null. 
while ((line=in.readLine())!=null) { 
    //line below tests for empty line 
    if(line.trim().equals(""){ 

    }  
}