我对使用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 )
答案 0 :(得分:7)
异常追踪是说你的代码......
BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
如果文件不存在,可能抛出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);
}
异常并不是说文件找不到,只是说如果该文件不存在,你的代码将采取什么措施来处理这种情况。
最终在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相关的调用并处理FileNotFounceException
和IOException
答案 3 :(得分:0)
尝试
String fileName = "input.infix";
File fil = new File(fileName);
String filePath = fil.getAbsolutePath();
BufferedReader infixLines = new BufferedReader(new FileReader(filePath));