2012-02-16 35 views
2

我在他的名字動態變化的目錄中有一個zip文件。 當我點擊一個按鈕,我應該能夠得到這個文件加名的完整路徑如下:U:\home\ash\dfi\dfiZipedFile\dfi.zip我如何獲得java中的文件名和路徑?

public static String getFileFullName(BcfiDownloadPanel bcfiDownloadPanel) { 
    File dir = new File("U:\\home\\ash\\dfi\\dfiZipedFile"); 

    String[] filesList = dir.list(); 
    if (filesList == null) { 
     // Either dir does not exist or is not a directory 
    } else { 
     for (int i = 0; i < filesList.length; i++) { 
      // Get filename of file or directory 
      String filename = filesList[i]; 
     } 
    } 
    String fileFullName = filesList[0]; 

    return fileFullName; 
} 
+0

在那個目錄中是否只有一個ZIP?它如何知道目錄,但不知道文件名?代碼如何編譯? – 2012-02-16 09:58:00

回答

3
public static String getFirstZipFilename(File dir) {   
    for (File file : dir.listFiles()) { 
     String filePath = file.getPath(); 
     if (file.isFile() && filePath.endsWith(".zip")) { 
      return filePath; 
     } 
    } 

    return null; 
} 
  • 適用於任何目錄(儘量讓你的實用方法一般...)
  • 返回只要一個有效的文件已經發現
  • 返回NULL如果沒有(沒有無用的測試)被發現,所以你可以知道它並顯示警告消息
+2

首先,你不應該使用斷言來檢查公共API中的先決條件。其次,斷言是多餘的,因爲dir引用通過調用dir.listFiles()立即解除。 – 2012-02-16 13:59:21

+0

對於第二點是正確的。關於第一個,這取決於該課程是否用於公共圖書館。然而,如果有疑問,你說得對,我會編輯答案。 – 2012-02-17 08:41:07

1

我就傻眼了,如果這段代碼會工作。

你應該用文件名中的\\代替\

+0

是的,你是對的。 – itro 2012-02-16 11:01:29

+0

這應該是對原始問題的評論。 – 2013-08-07 13:18:48

+0

@ james.garriss目標是幫助他。我的答案會讓他的代碼編譯,因此它是答案的「部分」,而不是純粹的評論。所以這兩個工作,無論是評論或答案。我老實說去了一個答案,因爲upvoted評論不給你點.. – 2013-08-07 13:33:23

2

喜歡的東西

String ret = null; 

File dir = new File("U:/home/ash/dfi/dfiZipedFile"); 
File[] files = dir.listFiles(); 
for (File file : files) 
{ 
    if (!file.isDirectory()) 
    { 
    ret = file.getPath(); 
    break; 
    } 
} 

return ret; 

返回目錄的第一個文件的完整路徑。

+0

這應該被糾正爲上面提到的某人 'File dir = new File(「U:\\ home \\ ash \\ dfi \\ dfiZipedFile」 );' – itro 2012-02-16 09:59:34

+0

如果有更多文件與其他滅絕,那麼怎麼辦? 我該如何拒絕其他分機? – itro 2012-02-16 10:04:23

+0

您可以在listFiles中使用FilenameFilter,或者使用filePath.toLowerCase()來測試filePath。endsWith(「.zip」) – ZehnVon12 2012-02-16 10:17:23

相關問題