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

Framework .NET Discussion :

Comment lister les fichiers dans un répertoire ?


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Par défaut [Tout langage] Comment lister les fichiers dans un répertoire ?
    Bonjour, je cherche a faire un petit programme pour récuperer la liste des fichiers et sous répertoire d'un dossier. J'ai trouvé des codes mais il n'agisse que sur un niveau. Je souhaite pouvoir descendre dans chaque sous répertoire et avoir aussi le nom des fichiers. Afficher sous forme web pr exemple

    dossier 1
    - fichier 1
    - fichier 2
    - dossier 11
    -- fichier 111
    -- fichier 112....
    -- dossier 111
    --- fichier1111....
    - dossier 12
    dossier 2
    fichier 21

    Je ne sais pas comment faire pour faire cela. Si quelqu'un peu m'aider...

    Merci


    Patrice

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Une petite fonction récursive et le tour est joué

    C'est pas trop compliqué: juste un peu d'algo. Tu devrais trouvé cela assez facilement sur le net

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    hihi, la solution de Morpheus est la plus pure, mais pour toi il y a heureusement des "echapatoires".
    va voir ici: http://faqvbnet.developpez.com/?page=file tu devrais y trouver ton bonheur

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    PatricePatrice: la réponse peut être différente selon la version du framework utilisée bien que le principe reste celui suggéré par Morpheus , si tu nous donnes la version du framework et le langage souhaité, nous pourrons te répondre avec plus de précision

    par exemple (ceci sera certainement présent bientôt dans la Faq)
    Pour une application console en C# 2.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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    /// <summary>
    ///  Méthode résursive qui affiche tous les dossiers, sous-dossiers 
    ///  et fichiers d'un répertoire
    /// </summary>
    /// <param name="folder">
    ///  String : chemin du dossier à explorer
    /// </param>
    /// <param name="indent">
    ///  Int32 : représente le nombre d'espaces à écrire pour indentation
    /// </param>
    private static void WriteFileEntries(String folder, Int32 indent)
    {
    // Créer une indentation du texte
    StringBuilder tab = new StringBuilder(String.Empty);
    for (int i = 0; i < indent; i++)
      { tab.Append(" ");}
    // Afficher les dossiers présents et leur contenu par récursivité
    String[] subdirs = Directory.GetDirectories(folder);
    // SI le dossier contient des sous-dossiers
    if (subdirs.Length != 0)
      {
       foreach (String s in subdirs)
        {
       // Afficher le nom du dossier à explorer
       Console.WriteLine(tab + Path.GetFileName(s));
       //Utiliser la récursivité avec une indentation
        WriteFileEntries(s, indent + 3);
        }
      }
    // Afficher les noms des fichiers présents
    String[] files = Directory.GetFiles(folder);
    // SI le dossier contient des fichiers
    if (files.Length != 0)
      {
      foreach (String s in files)
        { Console.WriteLine(tab + Path.GetFileName(s));}
      }
    }
    Pour le Web, je suppose qu'un Response.Write remplacera le Console.WriteLine

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    avec cette methode on ne liste que les fichier et sous dossiers d'un repertoire
    => j'ai essayé de lister toutes l'arborescence d'un repertoire mais je n'y arrive pas : une solution ?

  6. #6
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    Je te propose une petite methode qui peut t'aider
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            public static void ShowContents(string directoryName)
            {
                string[] dNames = Directory.GetDirectories(directoryName);
                foreach (string dirName in dNames)
                {
                    Console.WriteLine(dirName);
                    ShowContents(dirName);
                }
                string[] fNames = Directory.GetFiles(directoryName);
                foreach (string fileName in fNames)
                {
                    Console.WriteLine(fileName);
                }
            }
    Peut-etre avant d'appeler la methode tu dois verifier si le repertoire existe
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                string dirName = @"...";
     
                if (Directory.Exists(dirName))
                {
                    ShowContents(dirName);
                }

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Par défaut
    Utiliser une fonction en recursivité iterative.

    Je sais que ce terme peut choquer, mais ce sont des modes de fonctionnement de recursivité essentiel si on veux avoir assez de cordes à son arc.

    Voici un petit exemple ou l'on recupère dans un tableau le nom de tous les sous repertoires a n niveau d'un repertoire avec dans les 2 premiers caractère le niveau de sous repertoire.

    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
     
        Private Function parseDirectory(ByVal myDirInfo As System.IO.DirectoryInfo) As String()
            Dim sLstDir As String
            Dim result As String()
     
            sLstDir = lstDir(myDirInfo, 0)
            sLstDir = sLstDir.Substring(1, sLstDir.Length - 1)
            result = sLstDir.Split(";")
     
            Return result
        End Function
     
        Private Function lstDir(ByVal myDirInfo As System.IO.DirectoryInfo, ByVal myLevel As Integer) As String
            Dim aDir As System.IO.DirectoryInfo()
            Dim result As String = ""
            Dim i As Integer
     
            aDir = myDirInfo.GetDirectories()
     
            For i = 0 To aDir.GetUpperBound(0)
                result = result & ";" & twoDigit(myLevel + 1) & aDir(i).Name & lstDir(aDir(i), myLevel + 1)
            Next
     
            Return result
        End Function
     
        Private Function twoDigit(ByVal myInt As Integer) As String
            Dim Result As String = ""
     
            Select Case CBool(myInt > 9)
                Case True
                    If myInt > 99 Then
                        Result = "99"
                    Else
                        Result = myInt.ToString
                    End If
                Case False
                    If myInt < 0 Then
                        Result = "00"
                    Else
                        Result = "0" & myInt.ToString
                    End If
            End Select
     
            Return Result
        End Function
    Vous remarquerez que la fonction lstDir s'appel elle même de facon recurcive pour former une chaine de caractère de type
    resultat = resultat + fonction
    ce qui donne a n niveau une iteration de resultat concatené

    C'est ce que l'on nomme de la recurcivité iterative en opposition à de la recurcivité recurcive ou en fait on a un resultat de type :
    resultat = fonction(resultat)
    où le resultat s'imbrique à plusieurs niveaux.

    Evidemment mon code n'est qu'un exemple vite fait, mais fonctionne pour lister tous les sous-repertoires à n niveau d'un repertoire, j'ai mis tout ca dans un tableau à la fin pour être lisible mais libre à vous de trouver un autres formalisme pour s'adapter à vos besoin (remplir un treeview, etc..)

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    OK merci
    => en fait il me semble que le code donné en C# était bon mais que je ne le maitrise pas trop j'avais pas bien compris le code (en VB ça va mieux)...

Discussions similaires

  1. [XL-2007] Comment lister les fichiers contenus dans un répertoire Sharepoint
    Par Riri80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2020, 08h50
  2. Réponses: 5
    Dernier message: 25/06/2007, 23h25
  3. Réponses: 7
    Dernier message: 08/01/2007, 19h18
  4. Réponses: 13
    Dernier message: 24/08/2006, 13h05
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 14h35

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