在Java 8文档中,从Scanner接收文件源作为参数的构造函数抛出一个FileNotFoundException
。但是看看下面的代码:
try{
sc = new Scanner("Rede.txt"); //This archive already exists
}
catch(FileNotFoundException f){
f.printStackTrace;
}
finally{
sc.close();
}
当我运行它时,我得到这样的东西:
error:exception FileNotFoundException is never thrown in body of corresponding try statement
catch(FileNotFoundException f){
同样发生在IOException
。奇怪的是,如果我扔掉try-catch部分,代码将编译。
怎么了?
扫描器也可以扫描字符串。要明白我的意思,试试:
System.out.println( new Scanner("Rede.txt").next() );
打印Rede.txt
其他一些类(例如FileInputStream)将采用String路径,但Scanner不采用。如果你想使用一个文件,你需要传递给它一个file:
sc = new Scanner(new File("Rede.txt"));