在文件上使用BufferedReader时出现FileNotFoundException

Wuz*_*een 1 java file filenotfoundexception ioexception bufferedreader

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

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

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
Run Code Online (Sandbox Code Playgroud)

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

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

这就是说干脆

File file = new File("input.infix");
if ( file.exists() )
    System.out.println( "Exists" );
Run Code Online (Sandbox Code Playgroud)

做的工作.

非常困惑.

编辑:( 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 )
Run Code Online (Sandbox Code Playgroud)

wat*_*ios 7

异常跟踪说你的代码......

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
Run Code Online (Sandbox Code Playgroud)

可能抛出FileNotFoundException或者IOException如果文件不存在,所以它要你做一些事来处理这种可能性.

最简单的方法是将文件读取代码包装在这样的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);
}
Run Code Online (Sandbox Code Playgroud)

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

最终,catch你会想要做更多的事情System.out.println().例如,在GUI程序中,您可能会显示一条弹出消息,告诉用户该文件不存在.