IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Comment utiliser FilenameFilter ?


Sujet :

avec Java

  1. #1
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut Comment utiliser FilenameFilter ?
    Bonjour voila j'ai un pgm qui liste le contenu d'un répetoire et je dois filtrer ce contenu en utilisant FilenameFilter mais je sais pas du tt comment l'utiliser, si vous pouvez m'aider s'il vous plait....


    J'ai lu ce qui écrit sur le livre penser en Java voici le code:
    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
    32
    33
    //: c11:DirList.java
    // Affiche le listing d'un répertoire.
    import java.io.File;
    import java.io.FilenameFilter;
    import java.util.Arrays;
     
    public class EssaiFiltre {
    public static void main(String[] args) {
    File path = new File("repertoire1");
    String[] list;
    if(args.length == 0)
      list = path.list();
    else 
      list = path.list(new DirFilter(args[0]));
     
    Arrays.sort(list);
     
    for(int i = 0; i < list.length; i++)
      System.out.println(list[i]);
    }
    }
     
    class DirFilter implements FilenameFilter {
    String afn;
    DirFilter(String afn) { this.afn = afn; }
     
    public boolean accept(File dir, String name) {
    // Information du chemin de répertoire :
    String f = new File(name).getName();
    return f.indexOf(afn) != -1;
    }
     
    } ///:~
    première question:
    que va faire afn dans ce programe?

    deuxieme question:
    on a pas du tout appelé la méthode accept dans ce programme alors comment va-t-il filtrer?
    et la méthode accept renvois un idexof comment on va le traiter dans notre boucle for? (on la pas prix en considération du tout)

    troisieme question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(args.length == 0)
      list = path.list();
    else 
      list = path.list(new DirFilter(args[0]));
    pourquoi est ce qu'on utilise args ici? a quoi ca va servir???

    Merci bcp de m'aider, j'ai vraiment besoin d'aide....

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    1) c'est la chaine qu'on cherche dans le nom de fichier
    2) c'est path.list qui fait cet appel
    3) arg c'est justement ce qu'on cherche dans les noms de fichier.

  3. #3
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    mais la on ne lui dit pas du tt cherche par exemple *.java, quand est ce que on doit le lui dire?? et comment? un exemple svp

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est l'argument du programme qui détermine ce qu'on cherche. Si on met comme argument

    java

    il va chercher tous les fichiers ayant java dans leur nom.

  5. #5
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    ma question est: ou doit on mettre "java" sou quelle forme mettre notre filtre (regex ou quoi?)...

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ton filtre fait un indexOf, donc c'est juste un recherche de sous chaine dans le nom de fichier.

  7. #7
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    ok
    et s'il y avait plusieurs sous chaine apr exemple? comment il va gérer ca?

    et comment dois-je appeler mon filtre a partir de ma méthode main par exemple?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    j'ai rien compris à ce que tu cherche. Ton filtre là, il va chercher une sous chaien dans le nom du fichier. Si il la trouve il garde le fichier, sinon il le jette.

  9. #9
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    mais j'ai pas comment faire appel a mon filtre par exemple dans le ppgm que j'ai comment lui dire donne moi les fichier *.java voila ma qeustion, merci pour votre aide...

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le filtre que tu montre n'est pas capable de traiter *.java. Tu devra développer le tiens pour avoir des wildcards. Quand à passer le paramètre au filtre, il est passé au constructeur.

  11. #11
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    cmt fonctionne ce filtre alors parce que c pas moi qui l'ai fait comme je vous l'ai dit plus haut... Je l'ai pris en lisant le cours dessus sur le livre penser en java

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on t'as expliqué plus haut comment il marchait, on lui passe en constructeur la sous chaine à chercher et il la cherche.

  13. #13
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    mais c'est ma question: comment faire appel vu qu'il y a un if else... Pardon encore une fois pour le dérangement...

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    On va répéter autrement. Ton DirFilter il implémente FilenameFilter, une interface utilisée par File.list(FilenameFilter) pour filtrer le contenu d'un répertoire. Ton DirFilter, il se contente de faire un check pour savoir si une sous chaine dans le nom du fichier correspond à une chaine passé en paramètre à son constructeur.

    Si tu veux chercher une sous-chaine particulière, il faut construire un DirFilter en lui passant en argument du constructeur la chaine à chercher. C'est ce que fait
    new DirFilter(args[0])

    Si tu veux chercher sur base d'autres critère, tu dois créer ta propre classe qui implémente FilenameFilter et mettre ta logique dans la méthode
    accept(File dir, String name)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo