未报告的异常java.io.FileNotFoundException;?

时间:2013-02-08 16:55:39

标签: java file io java.util.scanner

我想打开一个文件并扫描它以打印它的标记,但是我收到错误:未报告的异常java.io.FileNotFoundException;必须被抓住或宣布被抛出 Scanner stdin = new Scanner(file1);该文件位于具有正确名称的同一文件夹中。

   import java.util.Scanner;
   import java.io.File;

   public class myzips {

           public static void main(String[] args) {

                  File file1 = new File ("zips.txt");

                  Scanner stdin = new Scanner (file1);

                  String str = stdin.next();

                  System.out.println(str);
          }
  }   

2 个答案:

答案 0 :(得分:3)

您使用的Scanner的构造函数会抛出FileNotFoundException,您必须在编译时捕获它。

public static void main(String[] args) {

    File file1 = new File ("zips.txt");
    try (Scanner stdin = new Scanner (file1);){
        String str = stdin.next();

        System.out.println(str);
    } catch (FileNotFoundException e) {
        /* handle */
    } 
}

上面的表示法,您在括号内的try内声明和实例化扫描器只是Java 7中的有效表示法。当您离开时,它的作用是将您的Scanner对象包裹close() try-catch块。您可以阅读更多相关信息here

答案 1 :(得分:3)

该文件可能不是。您需要声明您的方法可能会抛出FileNotFoundException,如下所示:

public static void main(String[] args) throws FileNotFoundException { ... }

或者您需要添加try -- catch块,如下所示:

Scanner scanner = null;
try {
  scanner = new Scanner(file1);
catch (FileNotFoundException e) {
  // handle it here
} finally {
  if (scanner != null) scanner.close();
}