2013-05-14 3 views
0

Я делаю программу, где я бы прочитал данные из файла excel и сохранил их в базе данных mysql. В этой программе пользователь будет указывать путь к файлу, который будет использоваться. Код для этого приведен ниже.разные категории ложного пути к файлу java

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

Что именно ваш вопрос? – DeadlyJesus

+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); 
    } 
} 
+0

Спасибо, но как бы я тогда уточнил, был ли пользователь, когда он дал путь, имел редакционную ошибку? Например, символ как:/,, ", которые не распознаются? – dedmar

+0

Цикл будет продолжаться и запрашивает у него допустимый путь. Я сделал редактирование, чтобы очистить это. –

+0

Да, но это одна возможная ошибка, когда файл не Если файл, который пользователь вставляет, фактически существует, но пользователь не дает правильный путь? Пример Foe вместо написания: C: \\ Users \\ myuser \\ Documents \\ testing.xls, он пишет C :. \ Users.myuser. \ Documents. \ Testing.xls, как мы бы сказали, что структура данного пути неверна? – dedmar