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