如何检查文件是否存在,如果不存在则循环再次询问新文件名?

时间:2014-04-01 00:23:38

标签: java file loops

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;
}

这是我目前的代码。它要求我键入一些文本,然后检查我输入的输入是否是文件 如果文件存在,我希望它返回文件名存储的字符串,返回到我的main方法 如果它不存在,我希望我的方法重新启动(?)。我该如何循环呢?我当前的方法只是重新调用整个方法,但如果我运行此代码,任何不作为文件存在的输入/文件名都会出现错误。

3 个答案:

答案 0 :(得分:3)

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;

请记住,如果您没有提供真实的文件,这将无限循环。

答案 1 :(得分:1)

循环正是您所需要的。在你的方法内:

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;

基本上,在您输入存在的文件名之前,代码会提示您输入文件。

答案 2 :(得分:1)

这应该可以解决问题

String filename = null;
do{
    System.out.print("Enter file name: ");
    filename = getFile.nextLine();
} while (!new File(filename).exists());

在此循环之后,您确定filename指的是存在的文件。