2013-04-29 176 views
18

我正在製作一個程序來存儲數據庫中的excel文件的數據。我希望用戶在控制檯中輸入文件的完整路徑,並在程序完成後僅繼續文件名。得到的文件名沒有擴展名全路徑

加載的完整路徑的代碼是:

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('.'))); 

之後,我想有:String filename = .......

的完整路徑,用戶可以鍵入會是這樣的:C:\\Users\\myfiles\\Documents\\test9.xls

我將創建的文件名將只採用沒有.xls的名稱! 任何人都可以幫助我如何做到這一點?

我該怎麼做,如果我想採取作爲文件名「test9.xls」? -

+0

變化 '/' 到 '\\' *字符串文件= strfullPath.substring (strfullPath.lastIndexOf('\\')+ 1); * – 2013-04-29 08:04:58

+0

如果我想把它作爲文件名「test9.xls」,我該怎麼做? – dedmar 2013-04-29 08:15:27

回答

1

您可以調用file.getName()方法,該方法以String形式返回文件的名稱。然後你剪下分機。

String fileName = file.getName(); 
fileName = fileName.substring(0, fileName.lastIndexOf(".")+1); 
+4

如果文件沒有擴展名,'fileName'將變成''「''。 – 2013-04-29 08:07:07

+0

@AndrewThompson考慮到這一點,如果文件名有「。」,這是唯一不會失敗的方法。除了擴展。 – andrebola 2014-05-13 14:31:12

+0

應該是fileName.lastIndexOf(「。」) - 1不是fileName.lastIndexOf(「。」)+ 1 – Ahmed 2016-07-01 00:16:26

29

你可以這樣說:

String fname = file.getName(); 
int pos = fname.lastIndexOf("."); 
if (pos > 0) { 
    fname = fname.substring(0, pos); 
} 

,或者您可以使用apache.commons.io.FilenameUtils

String fileNameWithOutExt = FilenameUtils.removeExtension(fileNameWithExt); 
+1

+1對於不重新發明輪子。 – 2013-04-29 08:11:13

+0

感謝FilenameUtils! – 2015-06-09 13:17:39

+0

加上一個用於使用純Java代碼而不是第三方庫的小片段。 – mahmood 2017-05-02 16:01:49

18

您可以使用File類來獲取文件名:

File userFile = new File(strfullPath); 
String filename = userFile.getName(); 

使用File對象有許多好處,包括對文件進行測試的能力存在:

if (userFile.isFile()) { 
    // Yay, it's a valid file (not a directory and not an invalid path) 
} 

您還需要檢查該文件有一個擴展你試圖剝奪它之前:

if (filename.indexOf(".") > 0) { 
    filename = filename.substring(0, filename.lastIndexOf(".")); 
} 
33

我通常用在其他交描述了本解決方案:

import org.apache.commons.io.FilenameUtils; 

String basename = FilenameUtils.getBaseName(fileName); 
1
if (!filename.equals(""))  
{ 
     String [] fileparts = filename.split("\\."); 
     String filename = fileparts[0]; //Get first part 
} 
+0

將來,當回答問題時,請提供解釋任何代碼示例的解釋,解釋其原因。 – 2014-07-02 09:38:15

相關問題