我有一個BufferedReader遍歷一個CSV文件的行;當它到達文件的末尾,則返回以下錯誤:爲什麼這個BufferedReader返回空字符串而不是null?
Exception in thread "main" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:992)
我如何去實現它到達文件的末尾,輸入爲空,而不是空的讀者?我檢查過這個文件,最後一行末尾沒有空格。
代碼:
File filReadMe = new File(inputFile);
BufferedReader brReadMe = new BufferedReader(new InputStreamReader(new FileInputStream(filReadMe), "UTF-8"));
try
{
String strLine;
while ((strLine = brReadMe.readLine()) != null)
{
System.out.println(strLine);
//place the line into CsvRecordFactory
int record = csv.processLine(strLine, input);
}
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
//Close the BufferedReader
try {
if (brReadMe != null)
brReadMe.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
你文件的最後一行包含一個空的'String',所以你應該檢查'strLine.equals(「」)'是否是停止'while循環'的另一個條件。 –
strLine.isEmpty()在語義上比strLine.equals更好(「」) –
感謝Luiggi和Cyrille。你知道我的語法有什麼問題嗎?我仍然看到同樣的錯誤。 (strLine = brReadMe.readLine())!= null &&!strLine.isEmpty()) – user2040880