不同类别的假文件路径java

时间:2013-05-14 13:59:18

标签: java file path

我正在制作一个程序,我将从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中提供这些命令?用户如何理解他输入的内容是错误的?

1 个答案:

答案 0 :(得分: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);
    }
}