2012-11-19 39 views
-3
static void parse(String fileName) throws IOException{ 
    FileReader fileReader=new FileReader((fileName)); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    StringBuilder stringBuilder=new StringBuilder(); 
    String string; 
    do{ 
     string=bufferedReader.readLine(); 
     stringBuilder.append(string); 
     }while(!string.equals(null)); 
    System.out.println(stringBuilder.toString()); 


} 

我嘗試使用StringBuilder將整個文件讀入字符串。但是我在while循環中出錯。爲什麼?Java:將文件讀入字符串的例外

+3

啊......老'等於(空)'問題。想想'equals(null)'的真正含義! :-) –

+1

將它改爲字符串!= null –

+0

(這個問題不是'(x).equals(null)' - 儘管是一個無用的構造 - 很像'(null).equals(x)'..) – 2012-11-19 02:46:29

回答

2

以下是你的循環應該怎麼看起來像

while((string = bufferedReader.readLine()) != null) {     
    stringBuilder.append(string); 
} 

與您的版本的問題是,string.equals(null)最終將在NPE結束。另外請注意,String.equals()將始終爲null參數返回false。

+0

正確答案和最佳代碼。 – LiuwkCn

+1

最初編寫的代碼的另一個問題是'stringBuilder.append(null)'將追加String'「null」'。 –

+0

當沒有更多的行可以讀取時,'bufferedReader.readLine()'返回null,因此你會在'string.equals(null)'處得到'NullPointerException'。所以應用程序終止於那一點而不是循環。 –

0

問題是

string.equals(null) 

如果字符串爲空,你不能調用equals方法就可以了。

相關問題