JFileChooser决定是否选择目录或文件

时间:2010-06-29 19:42:18

标签: java file jfilechooser directory-traversal

我的主要目标:

如果用户选择一个目录,它会扫描整个文件夹中的mp3文件并返回它们。如果他选择了一些mp3文件,则返回它们。

要返回所选文件很简单,但扫描目录中的mp3并不像我原先想象的那么容易。 我想这样做我首先要新来决定用户是选择了文件还是目录,但是如何?因为我可以同时使用getSelectedFiles()

2 个答案:

答案 0 :(得分:1)

您可以使用File.isDirectory()File.isFile()分别确定File是目录还是普通文件。

答案 1 :(得分: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);