2011-11-22 1 views
7

J'ai besoin d'obtenir tous les fichiers dans un répertoire qui ont une extension spécifique (par exemple, .txt). Je devrais pouvoir lister tous les fichiers qui ont l'extension '.txt' et '.TXT' (c.-à-d., Il devrait être insensible à la casse). J'ai écrit le cours suivant pour ça. Quel changement dois-je faire dans la classe suivante pour y parvenir?Java FilenameFilter

class OnlyExt implements FilenameFilter { 
    String ext; 

    public OnlyExt(String ext) { 
     this.ext = "." + ext; 
    } 

    public boolean accept(File dir, String name) { 
     return name.endsWith(ext); 
    } 
} 

Eh bien, j'ai essayé name.toLowerCase().endsWith(ext); dans le accept(), mais cela ne fonctionne pas.

Merci d'avance.

Répondre

14

Vous devez également mettre en minuscule l'extension.

class OnlyExt implements FilenameFilter { 
    String ext; 

    public OnlyExt(String ext) { 
     this.ext = ("." + ext).toLowerCase(); 
    } 

    public boolean accept(File dir, String name) { 
     return name.toLowerCase().endsWith(ext); 
    } 
} 

En outre, il pourrait être une bonne idée de vérifier dans le constructeur pour voir s'il y a déjà un chef de file « » et ne pas préfixer un autre si oui.

Questions connexes