2014-10-02 126 views
0

您好,我正在處理的程序的某個部分需要能夠搜索目錄。我瞭解如何使用路徑變量以及如何到達目錄;但一旦你在目錄中,你怎麼能區分文件彼此?我們可以創建一個包含在該目錄中的文件的數組/鏈接列表並使用它進行搜索?通過目錄搜索

在這個特定的程序中,目標是讓用戶輸入一個目錄,然後進入子目錄並找到一個以.mp3結尾的文件並將其複製到一個新的用戶創建的目錄中。可以確定文件夾中只有一個.mp3文件。

任何幫助將非常感激。

+0

你有沒有嘗試過目前爲止的任何部分?如果你發佈你的代碼會有幫助。您是否希望用戶通過點擊式UI或通過輸入命令來執行此操作? – deyur 2014-10-02 21:14:02

回答

0

您可以使用File對象來表示您的目錄,然後使用listFiles()(返回文件數組File[])將文件檢索到該目錄中。

如果您需要搜索子目錄,則可以針對您遇到的每個目錄遞歸使用listFiles()

至於文件擴展名,Apache Commons IO庫有一個整潔的FileFilter對於那個:SuffixFileFilter

0

獲取文件像這樣:

List<String> results = new ArrayList<String>(); 
File[] files = new File("/path/to/the/directory").listFiles(); 
for (File file : files) 
    if (file.isFile()) 
     results.add(file.getName()); 

如果你想擴展:

public static String getExtension(String filename){ 
    String extension = ""; 
    int i = fileName.lastIndexOf('.'); 
    if (i > 0) 
     extension = fileName.substring(i+1); 
    return extension; 
} 

還有其他方式獲得的文件擴展名listed here但他們通常需要一個共同的外部庫。

1

看到你說的話,我會假設你使用java7 Path api。

要知道,如果一個路徑是一個目錄或一個簡單的文件,使用Files.isDirectory(路徑)

列出文件/在你的目錄目錄,使用Files.list(路徑)

的Files類的javadoc:http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html

如果您使用「舊」java.io.File api,那麼您有一個listFiles方法,它可以將FileFilter作爲參數進行過濾,例如,只有以」 .MP3" 。

祝你好運