2

我对让基本文件读取与 Java 一起工作感到非常困惑。很多混合信号。

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

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

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

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

话虽这么说只是在做

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

确实有效。

很迷茫。

编辑:(堆栈跟踪?)

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

4 回答 4

8

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

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 程序中,您可能会显示一条弹出消息,告诉用户该文件不存在。

于 2012-05-24T02:53:29.700 回答
1

这条线

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

搜索 File: input.infix,如果没有找到则返回FileNotFoundException异常。确保它input.infix位于与java file.

于 2012-05-24T02:56:59.917 回答
1

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

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

于 2012-05-24T03:00:03.507 回答
0

试试这个

String fileName = "input.infix";
File fil = new File(fileName);
String filePath = fil.getAbsolutePath();
BufferedReader infixLines = new BufferedReader(new FileReader(filePath));
于 2020-02-16T15:06:43.317 回答