EOF中的空指针异常

时间:2014-10-27 15:57:10

标签: java bufferedreader fileinputstream

所以我目前在这个方法的最后一行得到一个空指针。从我在其他人看到的有关此问题的所有内容中,使用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();

}

2 个答案:

答案 0 :(得分:3)

永远不应该捕获空指针它应该被修复。您不希望它们传播到代码的其余部分。

还要确保关闭文件。添加finally块并关闭这些文件资源。这样,如果发现异常,您仍然会关闭文件。

答案 1 :(得分:0)

原来问题是我没有从以前的操作中正确关闭我的文件阅读器。谢谢你们。