0

我正在制作一个程序,我将从 excel 文件中读取数据并将它们存储在 mysql 数据库中。在这个程序中,用户将给出要使用的文件的路径。这样做的代码如下。

 String strfullPath = "";
 Scanner scanner = new Scanner(System. in );
 System.out.println("Please enter the fullpath of the file");
 strfullPath = scanner.nextLine();
 String file = strfullPath.substring(strfullPath.lastIndexOf('/') + 1);
 System.out.println(file.substring(0, file.indexOf('.')));
 @SuppressWarnings("unused")
 String filename = strfullPath.substring(strfullPath.lastIndexOf('\\') + 1);
 System.out.println(filename);
 String[] parts = filename.split("\\.");

然后我希望用户在控制台中提供完整路径时可以选择犯错。例如,如果他编写了一个文件夹中没有的文件,或者他编写了无法识别的特殊字符,或者例如他以不适当的方式编写了路径。我将如何在 java 中给出这些命令?用户如何理解他输入的内容是错误的?

4

1 回答 1

3

你应该做一个验证循环:

while (true)
{
    System.out.println("Please enter the fullpath of the file:");
    strfullPath = scanner.nextLine();
    File f = new File(strfullPath );
    if (f.canRead()) break;
    System.out.println("Error: File does not exist");
}

编辑 此方法检查路径是否有效并尝试更正它:

public static final String correctPath(final String path) {
    try {
        final String returnValue = new File(path).toPath().toAbsolutePath().normalize().toFile().toString();
        System.out.println(returnValue);
        return returnValue;
    } catch (final InvalidPathException e) {
        System.err.println(e.getMessage());
        final int errorIndex = e.getIndex();
        final String newPath = path.substring(0, errorIndex - 1) + path.substring(errorIndex + 1);
        return correctPath(newPath);
    }
}
于 2013-05-14T14:03:44.863 回答