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