2014-04-06 270 views
2

我正在嘗試讀取完整的文本csv文件;然而,如果在中間的空行的地方,這件事休息,我得到一個:讀取文本文件並跳過空行直到到達EOF

java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException 

我怎麼會去刪除/忽略空行,只要它不是在文件的結尾?

 file = new FileReader(fileName); 
     @SuppressWarnings("resource") 
     BufferedReader reader = new BufferedReader(file); 
     while ((line = reader.readLine()) != null) { 
        //do lots of stuff to sort the data into lists etc 
     } 
    } catch (Exception e) { 
     System.out.println("INPUT DATA WAS NOT FOUND, PLEASE PLACE FILE HERE: " + System.getProperty("user.dir")); 
     throw new RuntimeException(e); 
    } finally { 
     if (file != null) { 
      try { 
       file.close(); 
      } catch (IOException e) { 
       // Ignore issues during closing 
      } 
     } 
    } 

回答

8

這是這部分是造成問題:

while ((line = reader.readLine()) != null) { 

     //do lots of stuff to sort the data into lists etc 
     // **** Something assumes line is not empty ******* 
    } 

要忽略空行,添加此檢查,以確保該行擁有的東西:

while ((line = reader.readLine()) != null) { 
    if(line.length() > 0) { 
     //do lots of stuff to sort the data into lists etc 
    }   
} 
+1

其實你應該做的'如果( line.trim()。length()> 0)'捕獲可能有空白的空行。 – Jared

+0

乾杯,這是一個非常簡單的修復! – Ofek

+0

@Jared取決於你如何定義'空白'。如果'空白'行有非終止空白字符,那麼是的,你會想要應用'trim()'。如果空行只有行終止字符,'reader.readLine()'將返回一個空字符串。 – lreeder

相關問題