您好,我正在處理的程序的某個部分需要能夠搜索目錄。我瞭解如何使用路徑變量以及如何到達目錄;但一旦你在目錄中,你怎麼能區分文件彼此?我們可以創建一個包含在該目錄中的文件的數組/鏈接列表並使用它進行搜索?通過目錄搜索
在這個特定的程序中,目標是讓用戶輸入一個目錄,然後進入子目錄並找到一個以.mp3結尾的文件並將其複製到一個新的用戶創建的目錄中。可以確定文件夾中只有一個.mp3文件。
任何幫助將非常感激。
您好,我正在處理的程序的某個部分需要能夠搜索目錄。我瞭解如何使用路徑變量以及如何到達目錄;但一旦你在目錄中,你怎麼能區分文件彼此?我們可以創建一個包含在該目錄中的文件的數組/鏈接列表並使用它進行搜索?通過目錄搜索
在這個特定的程序中,目標是讓用戶輸入一個目錄,然後進入子目錄並找到一個以.mp3結尾的文件並將其複製到一個新的用戶創建的目錄中。可以確定文件夾中只有一個.mp3文件。
任何幫助將非常感激。
您可以使用File
對象來表示您的目錄,然後使用listFiles()
(返回文件數組File[]
)將文件檢索到該目錄中。
如果您需要搜索子目錄,則可以針對您遇到的每個目錄遞歸使用listFiles()
。
至於文件擴展名,Apache Commons IO庫有一個整潔的FileFilter
對於那個:SuffixFileFilter
。
獲取文件像這樣:
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但他們通常需要一個共同的外部庫。
看到你說的話,我會假設你使用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" 。
祝你好運
你有沒有嘗試過目前爲止的任何部分?如果你發佈你的代碼會有幫助。您是否希望用戶通過點擊式UI或通過輸入命令來執行此操作? – deyur 2014-10-02 21:14:02