Bonjour à vous développeurs.

Cela fait déjà quelques heures que je parcours forum et une partie, certes très restreinte, de ma matière grise, pour trouver d'ou vient mon problème.

Les faits :
Je parcours une arborescence et je stock les objet File dans un arrayList, jusque là tout fonctionne bien. Ensuite, j'aimerai faire une recherche d'un nom de fichier et pour faire cela j'utilise la méthode monFile.list(new Filtre(stringRechercher)).


le code qui parcour mon tableau :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public ArrayList filtre(){
        Iterator i = liste.iterator();
        File f;
        String[] testTmp = null;
        //System.out.println("p"+fndFichier);
        while ( i.hasNext()){
<div style="margin-left:40px">             f = (File) i.next();</div><div style="margin-left:40px">             System.out.println(f);</div><div style="margin-left:40px">             testTmp = f.list(new Filtre(fndFichier));</div><div style="margin-left:40px">             System.out.println(testTmp);</div>}
        return listeTriee;
La classe qui crée le filtre (patterne) pour le filtre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Filtre implements FilenameFilter {
 
    /** La pattern regexp correspondant aux meta-caractères */
    private final Pattern pattern;
 
 
    /**
     * Constructeur.
     * @param term La chaine représentant le masque de nom de fichier.
     */
    public Filtre(String fileMask) {
        // Ajoute de \Q \E autour de la chaine :
        String regexpPattern = Quote.quote(fileMask);
        //System.out.println(regexpPattern);
        // On remplace toutes les occurences de '*' afin de les interpréter :
        regexpPattern = regexpPattern.replaceAll("\\*", "\\\\E.*\\\\Q");
        //System.out.println(regexpPattern);
        // On remplace toutes les occurences de '?' afin de les interpréter :
        regexpPattern = regexpPattern.replaceAll("\\?", "\\\\E.\\\\Q");
        //System.out.println(regexpPattern);
        // On supprime tous les \Q\E inutiles :
        regexpPattern = regexpPattern.replaceAll("\\\\Q\\\\E", "");
        //System.out.println(regexpPattern);
        // On crée le pattern :
        this.pattern = Pattern.compile(regexpPattern);
        //System.out.println(regexpPattern);
    }
 
    public boolean accept(File dir, String name) {
<div style="margin-left:40px">         System.out.println(dir +"_"+ name);</div>return this.pattern.matcher(name).matches();
    }
}

La classe Quote du fait que je ne suis pas en 5.0


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Quote extends Object {
    public Quote(){
 
    }
    public static String quote(String s) {
        int slashEIndex = s.indexOf("\\E");
        if (slashEIndex == -1)
<div style="margin-left:40px">             return "\\Q" + s + "\\E";</div>StringBuffer sb = new StringBuffer(s.length() * 2);
        sb.append("\\Q");
        slashEIndex = 0;
        int current = 0;
        while ((slashEIndex = s.indexOf("\\E", current)) != -1) {
<div style="margin-left:40px">             sb.append(s.substring(current, slashEIndex));</div><div style="margin-left:40px">             current = slashEIndex + 2;</div><div style="margin-left:40px">             sb.append("\\E\\\\E\\Q");</div>}
        sb.append(s.substring(current, s.length()));
        sb.append("\\E");
        return sb.toString();
    }
 
}
Pour seul résultat en retour de mon "testTmp = f.list(new Filtre(fndFichier))" , j'ai un null

J'ai tourné le propblème dans tout les sens mais je n'arrive pas à mettre la main sur l'élément qui coince.

Merci de votre aide.