在文件上使用BufferedReader时出现FileNotFoundException

时间:2012-05-24 02:37:26

标签: java file bufferedreader ioexception filenotfoundexception

我对使用Java进行基本文件读取非常困惑。很多混合信号。

我尝试过几种不同的方式,每次都会遇到一个未找到的异常。我已经检查了一个文件对象设置为当前路径以打印当前目录,我确实在我正在尝试打开的文件所在的目录中。权限设置为每个人都可以阅读。我不确定发生了什么:

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

这是抛出错误的行,因此使用infixLines的每个连续行也会抛出错误。

我也尝试过使用FileInputStream并得到同样的错误。

说的只是做

File file = new File("input.infix");
if ( file.exists() )
    System.out.println( "Exists" );

开始工作了。

很困惑。

编辑:( Stacktrace?)

ParseInfix.java:13: unreported exception java.io.FileNotFoundException; must be
            BufferedReader infixLines = new BufferedReader(new FileReader (n
                                                           ^
ParseInfix.java:15: unreported exception java.io.IOException; must be caught or
            while ( ( line = infixLines.readLine()) != null )

4 个答案:

答案 0 :(得分:7)

异常追踪是说你的代码......

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

如果文件不存在,可能抛出FileNotFoundExceptionIOException,因此它希望您做一些事情来处理这种可能性。

最简单的方法是将文件读取代码包装在这样的try-catch块中......

try {
    BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
    // other reading code here
}
catch (FileNotFoundException e){
    System.out.println(e);
}
catch (IOException e){
    System.out.println(e);
}

异常并不是说文件找不到,只是说如果该文件不存在,你的代码将采取什么措施来处理这种情况。

最终在catch区块中,您希望做的不仅仅是System.out.println()。例如,在GUI程序中,您可能会显示一条弹出消息,告诉用户该文件不存在。

答案 1 :(得分:1)

这一行

BufferedReader infixLines = new BufferedReader (new FileReader("input.infix"));

搜索文件:input.infix,如果未找到,则会返回FileNotFoundException例外。确保input.infix位于与java file相同的目录中。

答案 2 :(得分:1)

它是编译错误,而不是运行时异常。

您需要在try-catch块中包装与File相关的调用并处理FileNotFounceExceptionIOException

答案 3 :(得分:0)

尝试

String fileName = "input.infix";
File fil = new File(fileName);
String filePath = fil.getAbsolutePath();
BufferedReader infixLines = new BufferedReader(new FileReader(filePath));