【发布时间】:2014-10-27 15:57:09
【问题描述】:
所以我目前在这个方法的最后一行得到一个空指针。从我在其他人那里读到的关于这个问题的所有内容中,使用while ((lineIn = myReader.readLine()) != null) 应该会在文件一无所有时停止该文件,但它似乎并没有这样做。相反,我最终抓住了一个 NPE。我无法弄清楚为什么会这样。任何意见,将不胜感激!我目前使用另一个 catch (NullPointerException) 声明来解决这个问题,但我认为这不是一个适当的解决方案。
BufferedReader myReader;
try {
FileInputStream fileInStream = new FileInputStream(
fileLocation);
InputStreamReader fileInputStreamReader = new InputStreamReader(
fileInStream, "UTF-16");
myReader = new BufferedReader(fileInputStreamReader);
String lineIn = "";
// Read the next line until there aren't any left
while ((lineIn = myReader.readLine()) != null) {
//Do stuff with line
}
System.out.println("done");
// Close the file connections now that the read is done.
fileIn.close();
myReader.close();
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
}
【问题讨论】:
-
在 finally 块中关闭阅读器:
finally { if(fileIn != null) fileIn.close(); if(myReader != null) myReader.close(); } -
你在
//Do stuff with line里面做什么? -
@Zhuinden 关闭
fileInStream就够了。 -
@m0skit0,实际上关闭 myReader(不接触)FileInputStream 是正确的做法。
-
@FedericoPonzi 只是字符串解析,与输入流无关:)
标签: java bufferedreader fileinputstream