Java EOF处的空指针异常

Java EOF处的空指针异常,java,bufferedreader,fileinputstream,Java,Bufferedreader,Fileinputstream,所以我现在在这个方法的最后一行得到一个空指针。从我读到的关于这个问题的其他人的所有信息来看,使用while((lineIn=myReader.readLine())!=null)应该在文件一无所有时停止文件,但它似乎没有这样做。相反,我最终赶上了NPE。我不明白这到底是为什么。任何建议都将不胜感激!我现在使用另一个 catch(NulLoPoExtExchange)语句来帮助解决这个问题,但我觉得这不是一个合适的解决方案。 BufferedReader myReader; tr

所以我现在在这个方法的最后一行得到一个空指针。从我读到的关于这个问题的其他人的所有信息来看,使用
while((lineIn=myReader.readLine())!=null)
应该在文件一无所有时停止文件,但它似乎没有这样做。相反,我最终赶上了NPE。我不明白这到底是为什么。任何建议都将不胜感激!我现在使用另一个<代码> catch(NulLoPoExtExchange)语句来帮助解决这个问题,但我觉得这不是一个合适的解决方案。
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块并关闭这些文件资源。这样,如果捕获到异常,您仍将关闭文件。

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


还要确保您正在关闭文件。添加一个finally块并关闭这些文件资源。这样,如果捕获到异常,您仍将关闭文件。

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



还要确保您正在关闭文件。添加一个finally块并关闭这些文件资源。这样,如果捕获到异常,您仍将关闭文件。

在finally块中关闭读取器:
finally{if(fileIn!=null)fileIn.close();if(myReader!=null)myReader.close();}
您在
//行中做什么?@Zhuinden Closing
fileInStream
就足够了。@m0skit0,实际上关闭myReader(不接触)FileInputStream是正确的做法。@FedericoPonzi只是字符串解析,与输入流无关:)在finally块中关闭读取器:
finally{if(fileIn!=null)fileIn.close();if(myReader!=null)myReader.close();}
你在
//行中做什么?@Zhuinden关闭
fileInStream
就足够了。@m0skit0,实际上关闭myReader(不接触)FileInputStream是正确的做法。@FedericoPonzi只是字符串解析,与输入流无关:)在finally块中关闭阅读器:
finally{if(fileIn!=null)fileIn.close();if(myReader!=null)myReader.close();}
你在
//行中做什么?@Zhuinden Closing
fileInStream
就足够了。@m0skit0,实际上关闭myReader(不接触)FileInputStream是正确的做法。@FedericoPonzi只是字符串解析,与输入流无关:)在finally块中关闭读取器:
finally{if(fileIn!=null)fileIn.close();if(myReader!=null)myReader.close();}
你在
//行中做什么?@Zhuinden关闭
fileInStream
就足够了。@m0skit0,实际上关闭myReader(不接触)FileInputStream是正确的做法。@FedericoPonzi只是字符串解析,与输入流无关:)尝试使用资源()是正确的方法。是的,从文档来看,try-with-resource似乎是Java7及以上版本。对于所有其他版本,使用try-with-finally.try-with-resources()是一种方法。是的,从文档来看,try-with-resource似乎是java 7及以上版本。对于所有其他版本,使用try-with-finally.try-with-resources()是一种方法。是的,从文档来看,try-with-resource似乎是java 7及以上版本。对于所有其他版本,使用try-with-finally.try-with-resources()是一种方法。是的,从文档来看,try-with-resource似乎是java 7及以上版本。对于所有其他版本,请使用try with finally。