2010-06-29 9 views
1

Mon objectif principal:Chooser JFile décider si répertoire ou un fichier est sélectionné

si l'utilisateur sélectionne un répertoire, il scanne le dossier entier pour les fichiers mp3 et les renvoie. S'il sélectionne des fichiers mp3, il les renvoie.

Pour retourner les fichiers sélectionnés était facile, mais pour numériser le répertoire pour les mp3 n'est pas aussi facile que je pensais d'abord. Et je pense que pour faire cela, je suis le premier à décider si l'utilisateur a sélectionné un fichier ou un répertoire, mais comment? Depuis que je peux obtenir les deux avec getSelectedFiles().

+1

nous vous serions reconnaissants si vous avez fourni une alimentation indiquant en arrière si nos réponses ont été utiles ou non. – jjnguy

Répondre

1

Vous pouvez utiliser File.isDirectory() et File.isFile() pour déterminer si un File est un répertoire ou un fichier normal, respectivement.

0

Puisque vous voulez que vos utilisateurs choisissent seulement un répertoire, vous devrez trouver les fichiers mp3 vous-même.

Vous pouvez parcourir de manière récursive un répertoire à la recherche de fichiers se terminant par ".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); 
    } 
} 

La méthode précédente traversera récursive tous les répertoires et remplir toBuildUp avec tous les fichiers mp3 dans ce répertoire.

Vous appelez cette méthode comme:

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

Si le fichier n'est pas un répertoire et ne se termine pas par "mp3" alors votre boucle for lancera une exception de pointeur nul. – rancidfishbreath

+0

@rancid Merci d'avoir signalé une faille dans ma logique. – jjnguy

Questions connexes