Java.IO.FileNotFoundException处理

时间:2017-08-17 14:41:29

标签: java

当这样做时,我试图让它为我的同事“虚拟证明”,所以如果他们放入文件路径而不是文件 - 程序不会停止,以便他们可以继续在应用程序中 - 它会再次问他们。但目前

FileNotFoundException: C:\Users\usersname\Desktop\userImports\current (Access is denied)
java.io.FileNotFoundException: C:\Users\usersname\Desktop\userImports\current (Access is denied)

我如何为此工作?我不希望它像这样崩溃,我只想说,“那不是文件 - 请再试一次”

如何更好地处理未找到文件的异常?

 File f;
            do {
                System.out.print("Please give me the " + type + "file: " );
                String file = console.nextLine();
                f = new File(file);
            } while (!f.exists());
            Scanner readMe = null;
            try {
                readMe = new Scanner(f);
            } catch (FileNotFoundException e) {
                System.err.println("FileNotFoundException: " + e.getMessage());
                e.printStackTrace();
            }
            return readMe;
        }

3 个答案:

答案 0 :(得分:2)

我不确定我理解你到底想要什么,但这是我对我理解的答案: 只是循环,而你找不到文件,你也可以添加一个计数器,就像你退出程序后5次。

File f;
boolean found = false ; 

  while (!found) {

        do {
            System.out.print("Please give me the " + type + "file: " );
            String file = console.nextLine();
            f = new File(file);
        } while (!f.exists());

        Scanner readMe = null;

        try {

            readMe = new Scanner(f);
            found = true ; 

        } catch (FileNotFoundException e) {
            found = false ; 
            System.err.println("FileNotFoundException: " + e.getMessage());

            system.out.printl  ( "A problem occured while loading the file please try again ");
            //e.printStackTrace();
        }
  }

  return readMe;

}

答案 1 :(得分:0)

"访问被拒绝"意味着该文件确实存在,但不允许运行该程序的用户访问 - 在您的情况下读取它。也就是说,用户没有必要的权限,或者文件被另一个程序持有。

答案 2 :(得分:0)

尝试使用canRead()而不是exists()

do {
  ...
} while (!f.canRead());