public static String getFilename(Scanner getFile) throws FileNotFoundException {
System.out.print("nEnter file name: ");
String filename = getFile.next();
File f = new File(filename);
if (f.exists()) {
System.out.println(filename + " exists.");
} else {
System.out.println(filename + " does not exist.");
getFilename(getFile);
}
return filename;
}
这是我当前的代码。它要求我键入一些文本,然后检查我键入的输入是否是文件。
如果该文件存在,我希望它将文件名存储为的字符串返回给我的主方法。
如果它不存在,我希望我的方法重新启动(?如何循环?我当前的方法只是重新调用整个方法,但是如果我运行此代码,任何不作为文件存在的输入/文件名都会出现错误。
File f = new File([filename]);
while(!f.exists()) {
f = new File([newFilename]);
}
// Do what you want to do with the file.
这也允许您直接返回文件而不是文件名,但您可以像这样返回文件名:
String s = [filename];
File f = new File(s);
while(!f.exists()) {
s = [newFilename];
f = new File(s);
}
return s;
请记住,如果您从未提供真实文件,这将无限循环。
循环正是您所需要的。在您的方法中:
String fileName = "";
File f = new File(fileName);
while(!f.exists()) {
System.out.println("Enter file name: ");
fileName = getFile.next();
f = new File(fileName);
}
return f;
基本上,代码将提示您输入文件,直到您输入存在的文件名。
这应该可以解决问题
String filename = null;
do{
System.out.print("Enter file name: ");
filename = getFile.nextLine();
} while (!new File(filename).exists());
在此循环之后,您确定filename
引用存在的文件。