我的主要目标:
如果用户选择一个目录,它会扫描整个文件夹中的 mp3 文件并返回它们。如果他选择了一些 mp3 文件,它会返回它们。
返回选定的文件很容易,但扫描目录中的 mp3 并不像我最初想象的那么容易。我认为要做到这一点,我首先要决定用户是否选择了文件或目录,但是如何?因为我可以同时使用getSelectedFiles()
.
我的主要目标:
如果用户选择一个目录,它会扫描整个文件夹中的 mp3 文件并返回它们。如果他选择了一些 mp3 文件,它会返回它们。
返回选定的文件很容易,但扫描目录中的 mp3 并不像我最初想象的那么容易。我认为要做到这一点,我首先要决定用户是否选择了文件或目录,但是如何?因为我可以同时使用getSelectedFiles()
.
您可以使用File.isDirectory()
和File.isFile()
分别确定 aFile
是目录还是普通文件。
由于您希望您的用户只选择一个目录,因此您需要自己查找 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);
}
}
上述方法将递归遍历所有目录并填充toBuildUp
该目录下的每个 mp3 文件。
您将调用此方法,如:
List<File> allMp3s = new ArrayList<File>();
findAllMp3s(selectedDirectory, allMp3s);