2013-05-14 57 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 2013-05-14 14:02:13

+0

沒有自動診斷某個文件系統路徑無效的確切原因的方法。您必須爲您感興趣的每種特殊情況編寫代碼。 – 2013-05-14 14:04:52

回答

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 2013-05-15 08:21:24

+0

循環會繼續並要求他提供一個有效的路徑。我做了一個編輯來清除它。 – 2013-05-15 08:46:05

+0

是的,但這是一個可能的錯誤,其中文件不如果用戶插入的文件實際存在,但用戶沒有給出正確的路徑,那麼這個文件就是C:\\ Users \\ myuser \\ Documents \\ tests.xls,而不是寫入C :. \ Users.myuser。\ Documents。\ testing.xls我們如何說給定路徑的結構是錯誤的? – dedmar 2013-05-15 08:52:53