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 les fichiers d'une arborescence


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut Lister les fichiers d'une arborescence
    Bonjour à tous,

    N'étant pas un kador en java je me heurte à un petit soucis technique.

    A partir d'un répertoire racine (par exemple c:\temp), j'ai besoin de récupérer la liste complète de tous les fichiers ayant une extension spécifique (par exemple .txt) et contenus dans ce répertoire ainsi que dans tous ses sous-répertoire.

    Existe t'il un moyen simple pour y arriver ?

    Merci d'avance.

    Bonne journée à tous.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par durenthil Voir le message
    Existe t'il un moyen simple pour y arriver ?
    Oui, c'est un problème simple et classique. => ça peut se faire facilement (et de plusieurs façons)

    Maintenant, où bloques-tu exactement?
    - tu as du mal à concevoir l'algorithme?
    - tu ne trouves pas les classes java appropriées?

    Regarde donc du côté de la classe File et FileFilter
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    simple, oui. Immediat, non.

    Tu dois simplement écrire une méthode récursive qui prend en paramètre un File et une List et qui remplis la List avec les fichier correspondant pour le répertoire donnée, et qui s'appelle recursivement pour tout sous répertoire trouvé.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Merci pour vos réponses.

    Pour vous répondre en quelques mots : je suis un développeur amateur et débutant et j'avoue que je n'ai jamais touché aux fonctions récursives. Si vous pouvez m'éclairer sur le sujet ça serait vraiment cool.

    Je pense que j'ai à la fois un problème d'algorithme et de technique. Je ne sais pas trop par quel bout prendre ce truc ni quelles sont les classes à utiliser (je sors juste de mon apprentissage Javascript et donc Java c'est un peu nouveau pour moi).

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    une méthode récursive est une méthode qui s'appelle elle-même. Rien de compliqué là dedans, si ce n'est qu'il faut s'assurer qu'elle ne s'appelle pas elle-même indéfiniment (donc le travail de l'appel recursif, d'un point de vue algorithmique, doit être plus simple que celui de la méthode appelante.


    Exemple en pseudo code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lister_fichiers (repertoire, liste)
       pour chaque fichier 'f'  dans répertoire faire
           si f est un sous-répertoire
             lister_fichiers (f,liste)
           sinon si f est un fichier normal et fini en '.txt'
             ajouter f à liste
    Pour ce qui est des liste, utilise une ArrayList. Pour avoir tous le contenu d'un répertoire, il y a les méthodes qu'il faut dans File (çà te retourne un array de File ^^), pour tester si un fichier est un répertoire il y a la méthode isDirectory/

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Je te remercie beaucoup pour ton explication, je vais essayer de faire ça.

    Bonne journée.

  7. #7
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    Voici si ce n'est pa strop tard un exemple de 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
     
     
    import java.io.File;
    import java.io.IOException;
    import java.io.*;
     
    public class RechercheFichier {
     
    public RechercheFichier(){}
    public static void main(String[] args) {
    File f=new File("c:\\cwsjava\\services"); // le dossier dans lequel on cherche les fichiers
    File[] fichiers;
    fichiers=f.listFiles();
    for(int i=0;i<fichiers.length;i++){
    	String nomFichier=fichiers[i].getName();
    	if (fichiers[i].isDirectory()) {
    		File[] dossier;
    		dossier=fichiers[i].listFiles();
    		String nomdossier=fichiers[i].getName();
    		System.out.println("dossier trouvé : "+nomdossier);
    		try {
    		for (int j=0;j<dossier.length;j++){
    		String fichiercourant=dossier[j].getName();
    		if (fichiercourant.contains(".class")){
    // on recherche et affiche les fichiers de type .class
    			System.out.println(fichiercourant);}
    		}
    		} catch (IOException e) {e.printStackTrace();}
       }
    } 
    } // méthode main()
    } la classe RechercheFichier
    Merci.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/02/2014, 19h47
  2. Réponses: 7
    Dernier message: 09/07/2009, 11h35
  3. Lister les fichiers sur une machine réseau
    Par WerKa dans le forum Général Java
    Réponses: 2
    Dernier message: 12/05/2008, 14h24
  4. Réponses: 1
    Dernier message: 06/12/2007, 16h50
  5. Lister les fichiers antérieurs à une date X
    Par bragon dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 05/04/2007, 19h54

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