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

Entrée/Sortie Java Discussion :

Lister fichiers répertoire


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut Lister fichiers répertoire
    Bonjour,

    je cherche à lister un répertoire de fichiers. Ce que j'arrive à faire.
    Par contre ce que je n'arrives pas à faire c'est de lister un type de fichiers qui se trouve dans ce repertoire, en l'occurence les jpg.

    Je vous montre ma classe qui liste bien tous les fichiers mais j'aimerai lister seulement les jpg.

    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
    	public static void listeRepertoire ( File repertoire ,String type) {
     
    		if ( repertoire.isDirectory ( ) ) {
    			File[] list = repertoire.listFiles();
     
    			FilenameFilter filter = new FilenameFilter() {
     
                    public boolean accept(File dir, String name) {
                    	return  name.endsWith(".jpg");
     
                }
            };
            list= repertoire.listFiles(filter.accept(, name));
     
    			if (list != null){
    				for ( int i = 0; i < list.length; i++) {
    					// Appel récursif sur les sous-répertoires
    					listeRepertoire( list[i],type);
    				} 
    			} else {
    				System.err.println(repertoire + " : Erreur de lecture.");
    			}
    		}
    			if (repertoire.getPath()!= type){
    				Resize size = new Resize(repertoire.getPath());
    			}
    	}

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu as une erreur dans ton algorithme : tu cherches à faire de la récursion, mais seulement, tu ne choisis que les fichiers que les répertoires dont le nom se termine par ".jpg". Si ton répertoire contient des répertoires d'images, c'est mort (du moins pour ces sous-répertoires). Sinon, ça marche impec (testé chez moi).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    J ai enlevé la récursion.

    Cela ne marche toujours pas mais j'ai du remplacer cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list= repertoire.listFiles(filter.accept(, name));
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list= repertoire.listFiles(filter);
    Mais ca marche pas .

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Oki... Je croyais que les erreurs étaient laissées là par inadvertance.

    Pour la correction, voici :
    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
    import java.io.File;
    import java.io.FilenameFilter;
     
    public class Files {
    	public static void listeRepertoire(File repertoire, String type) {
    		if (repertoire.isDirectory()) {
    			File[] list = repertoire.listFiles(new FilenameFilter() {
    				public boolean accept(File file, String fileName) {
    					return fileName.endsWith(".jpg");
    				}
    			});
     
    			if (list != null) {
    				for (int i = 0; i < list.length; i++) {
    					System.out.println(list[i]);
    					// Appel récursif sur les sous-répertoires
    					listeRepertoire(list[i], type);
    				}
    			} else {
    				System.err.println(repertoire + " : Erreur de lecture.");
    			}
    		}
     
    		if (!repertoire.getPath().equals(type)){
    			Resize size = new Resize(repertoire.getPath());
    		}
     
    	}
     
    	public static void main(String... args) {
    		listeRepertoire(new File(System.getProperty("user.home")), "");
    	}
    }
    Mais... ce code ne fait pas de récursion. Si tu en souhaites, dis-le moi, je l'ajoute.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    ok merci je regarderai et je te tiens au courant .

    pour l'instant je suis sur l extraction de fichier excel.

  6. #6
    Membre habitué Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Points : 180
    Points
    180
    Par défaut
    Je me permet de faire remonter ce topic car j'aimerai bien savoir comment la récursion avec les sous répertoire serait faite ?

    Merci par avance.
    "J'glande pas ! Ça compile ..."

    4rocky4
    - Un con qui marche ira plus loin q'un intellectuel assis -

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Ceci devrait vous aider. Voir exemple dans la méthode main.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    import java.io.File;
    import java.io.FilenameFilter;
     
    public class Files {
      /**
       * <p>Créer un <tt>FilenameFilter</tt> filtrant uniquement les fichiers dont
       * le nom se termine par <tt>extension</tt>.
       */
      public static FilenameFilter avecExtension(final String extension) {
        checkNonNull(extension);
        return new FilenameFilter() {
          @Override
          public boolean accept(File repertoire, String nom) {
            return nom.endsWith(extension);
          }
        };
      }
     
      /**
       * <p>Liste récursivement les fichiers contenus dans le répertoire
       * repertoire, avec FilenameFilter comme filtre.
       */
      public static List<File> listeRepertoire(File repertoire,
                                               FilenameFilter filtre) {
        checkNonNull(repertoire);
        checkEstRepertoire(repertoire);
        List<File> fichiers = new ArrayList<File>();
        listeRepertoire(repertoire, fichiers);
        return fichiers;
      }
     
      /*
       * <p>Liste récursivement les fichiers du répertoire <tt>repertoire</tt>
       * satisfaisant le filtre <tt>filtre</tt>.
       * <p>Les fichiers seront ajoutés à la liste <tt>fichiers</tt>.
       */
      private static void listeRepertoire(File repertoire, FilenameFilter filtre,
                                          List<File> fichiers) {
        assert repertoire.isDirectory();
        File[] tousLesFichiers = repertoire.listFiles();
        if (tousLesFichiers != null) {
          for (File fichier: tousLesFichiers.listFiles()) {
            if (fichier.isDirectory()) {
              listeRepertoire(fichier, filtre, fichiers);
            } else if (filtre.accept(repertoire, fichier.getName())) {
              fichiers.add(fichier);
            }
          }
        }
      }
     
      /*
       * Vérifie qu'un objet n'est pas <tt>null</tt> et s'il l'est, lève une
       * exception.
       */
      private static void checkNonNull(Object objet) {
        if (objet == null) {
          throw new NullPointerException();
        }
      }
     
      /*
       * Vérifie qu'un <tt>File</tt> est un répertoire. S'il ne l'est pas, lève
       * une exception.
       */
      private static void checkEstRepertoire(File fichier) {
        if (!fichier.isDirectory() {
          throw new IllegalArgumentException();
        }
      }
     
      public static void main(String... args) {
        File repertoire = new File(System.getProperty("user.home"));
        FilenameFilter extension = Files.avecExtension(".jpg");
        List<File> fichiers = Files.listeRepertoire(repertoire, extension)
        for (File fichier: fichiers) {
          System.out.println(fichier);
        }
      }
    }

  8. #8
    Membre habitué Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Points : 180
    Points
    180
    Par défaut
    Impeccable, merci
    "J'glande pas ! Ça compile ..."

    4rocky4
    - Un con qui marche ira plus loin q'un intellectuel assis -

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut programme
    bonjour désolé de vous déranger mais j'aurai besoin d'un programme me permettant d'identifier et recenser l'ensemble des fichiers pdf présents dans une
    arborescence quelconque (je dois indiquer uniquement le point de départ de ma recherche) le principe est le meme que celui de la recherche des fichiers jpeg present dans ce topic mais il y a plusieurs chose que je ne comprend pas dans votre programme:
    -d'abords comment dois-je indiquer le dossier de départ dans lequel effectuer la recherche.
    - ensuite qu'est-ce que l'objet resize.

    je vous serai tres reconaissant de m'aider sachant que la poo en java n'est pas ma matiere et mon langage preferé.

    cordialement

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

Discussions similaires

  1. [WD17] Lister fichier + répertoire Samba
    Par R&B dans le forum WinDev
    Réponses: 4
    Dernier message: 09/10/2012, 08h18
  2. Lister fichiers et sous répertoire dans un menu déroulant
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2008, 16h48
  3. Lister un répertoire et supprimer ses fichiers
    Par Phifi dans le forum VBScript
    Réponses: 2
    Dernier message: 28/08/2007, 17h20
  4. Excel - Lister fichiers présents dans un répertoire
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2006, 13h24
  5. Comment lister fichier d'un répertoire ?
    Par SebRs dans le forum C++
    Réponses: 2
    Dernier message: 13/04/2006, 12h31

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