我的主要目標:JFile選配決定,如果目錄或文件被選中
如果用戶選擇一個目錄,它會掃描MP3文件的整個文件夾,並返回它們。如果他選擇了一些mp3文件,它會返回它們。
要返回選定的文件是一件容易的事,但要掃描mp3目錄並不像我第一次想到的那麼容易。 我想這樣做,我第一次決定用戶是否選擇了一個文件或目錄,但如何?因爲我可以得到getSelectedFiles()
。
我的主要目標:JFile選配決定,如果目錄或文件被選中
如果用戶選擇一個目錄,它會掃描MP3文件的整個文件夾,並返回它們。如果他選擇了一些mp3文件,它會返回它們。
要返回選定的文件是一件容易的事,但要掃描mp3目錄並不像我第一次想到的那麼容易。 我想這樣做,我第一次決定用戶是否選擇了一個文件或目錄,但如何?因爲我可以得到getSelectedFiles()
。
可以使用File.isDirectory()
和File.isFile()
分別確定File
是目錄還是普通文件。
由於您希望用戶只選擇一個目錄,因此您需要自己找到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);
如果該文件不是目錄,並且不以「mp3」結尾,那麼for循環將拋出空指針異常。 – rancidfishbreath 2010-06-29 21:19:09
@rancid感謝您指出我的邏輯缺陷。 – jjnguy 2010-06-30 12:25:34
,如果你提供了一些反饋表明,如果我們的答案是有益還是沒有,我們將不勝感激。 – jjnguy 2010-07-20 18:38:49