2010-06-29 24 views
1

我的主要目標:JFile選配決定,如果目錄或文件被選中

如果用戶選擇一個目錄,它會掃描MP3文件的整個文件夾,並返回它們。如果他選擇了一些mp3文件,它會返回它們。

要返回選定的文件是一件容易的事,但要掃描mp3目錄並不像我第一次想到的那麼容易。 我想這樣做,我第一次決定用戶是否選擇了一個文件或目錄,但如何?因爲我可以得到getSelectedFiles()

+1

,如果你提供了一些反饋表明,如果我們的答案是有益還是沒有,我們將不勝感激。 – jjnguy 2010-07-20 18:38:49

回答

1

可以使用File.isDirectory()File.isFile()分別確定File是目錄還是普通文件。

0

由於您希望用戶只選擇一個目錄,因此您需要自己找到mp3文件。

您可以遞歸遍歷目錄查找以「.mp3」結尾的文件。

public static void findMp3s(File root, List<File> toBuildUp) { 
    // if the File is not a directory, and the name ends with mp3 
    // we will add it to our list of mp3s 
    if (!root.isDirectory() && root.getName().endsWith("mp3")) { 
     toBuildUp.add(root); 
     return; 
    } 
    if (!file.isDirectory()) 
     return; 
    // Now, we know that root is a Directory 
    // We will look through every file and directory under root, 
    // and recursively look for more mp3 files 
    for (File f: root.listFiles()){ 
     findMp3s(f, toBuildUp); 
    } 
} 

前面的方法將遞歸遍歷所有的目錄,並將該目錄下所有的MP3文件的填充toBuildUp

你將調用此方法,如:

List<File> allMp3s = new ArrayList<File>(); 
findAllMp3s(selectedDirectory, allMp3s); 
+2

如果該文件不是目錄,並且不以「mp3」結尾,那麼for循環將拋出空指針異常。 – rancidfishbreath 2010-06-29 21:19:09

+0

@rancid感謝您指出我的邏輯缺陷。 – jjnguy 2010-06-30 12:25:34