Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTER TOUS LES FICHIERS D'UN REPERTOIRE ET SOUS REPERTOIRE


Information sur la source

Catégorie :Fichier / Disque Source .NET ( DotNet ) Niveau : Débutant Date de création : 04/01/2004 Date de mise à jour : 07/04/2004 13:17:21 Vu : 20 845

Note :
6,5 / 10 - par 4 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


Description

J'ai  rien trouve dans le framework pour avoir tous les fichiers contenus dans un reprtoire et tous ses sous repertoires donc voici



 

Source

  • 'On déclare une arraylist qui contiendras tous les fichiers
  • Private ListeInfo As New ArrayList
  • ' La fonction qui va remplir notre arraylist
  • Private function ListeFichier(ByVal repertoire As DirectoryInfo, ByVal Reset As Boolean) as arraylist
  • If Reset = True Then
  • ListeInfo.Clear()
  • End If
  • If repertoire.GetDirectories.Length <> 0 Then
  • For Each repertoire2 As DirectoryInfo In repertoire.GetDirectories
  • ListeFichier(repertoire2, False)
  • Next
  • End If
  • For Each fichier As FileInfo In repertoire.GetFiles("*.*")
  • ListeInfo.Add(fichier.Name)
  • Next
  • return ListeInfo
  • End function
'On déclare une arraylist qui contiendras tous les fichiers
Private ListeInfo As New ArrayList
  
' La fonction qui va remplir notre arraylist
Private function ListeFichier(ByVal repertoire As DirectoryInfo, ByVal Reset As Boolean) as arraylist

        If Reset = True Then
            ListeInfo.Clear()
        End If


        If repertoire.GetDirectories.Length <> 0 Then
            For Each repertoire2 As DirectoryInfo In repertoire.GetDirectories
                ListeFichier(repertoire2, False)
            Next
        End If

        For Each fichier As FileInfo In repertoire.GetFiles("*.*")
   
            ListeInfo.Add(fichier.Name)
        Next

return ListeInfo

    End function

Conclusion

J'ai pas commenté le bout de code car je le trouve simple

Pour appeller la fonction on fait ListeFichier("C:/",true)

Le booleen en parametre veut dire qu'on efface tout ce qu'il y a deja dans l'arraylist

Dites moi ce que vous en pensez et si vous connaissez une solution plus simple et mettez moi une petite note :P
 

Commentaires et avis

signaler à un administrateur
Commentaire de lumesh le 04/01/2004 11:31:56

tu as aussi:

Dim Liste() as String
Dim Chemin as String = "C:\"
Dim Pattern as String = "*.*"
Liste = System.IO.Directory.GetFileSystemEntries(Chemin, Pattern)

signaler à un administrateur
Commentaire de jesusonline le 04/01/2004 11:42:30 administrateur CS

Merci beaucoup en effet c'est quand meme beaucoup plus simple lol

signaler à un administrateur
Commentaire de lumesh le 05/01/2004 06:05:51

certe ;)

signaler à un administrateur
Commentaire de CanisLupus le 14/01/2004 21:32:58 administrateur CS

Heu... je ne voudrais pas dénigrer mais ton code est un peu bancal.
Commencer par un private sub et finir par end function, déjà c bizarre. C pas du VB ça.
Tu as mal dû recopier ton code, sinon, indique moi dans quel langage c écrit.

Maintenant, si tu veux plus simple cherche du côté FileSystemObject.
Un chtit exemple pour lister les dossiers :

Tu copies ça dans une form où tu as mis un ctrl listbox(list1) et tu exécutes.

Cela dit, c qu'une piste et c pas garanti que ce soit rapide.

Private Sub Form_Load()
Dim fso, f, fc
Dim racine

racine = "c:\"

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFolder(racine)
  
  For Each fc In f.SubFolders
  
    List1.AddItem fc.Name
        
  Next
  
  Set fso = Nothing
  
End Sub


Cordialement

signaler à un administrateur
Commentaire de lumesh le 14/01/2004 22:34:45

CanisLupus, pourquoi utiliser le FSO (threadé biensur sinon ca freeze l'applie) alors que le framework te donne tout ?!
Perso je remplace un max d'API de de functions style FSO (ou dans le meem genre) via le framework !!

C'est un conseil perso, mais matez d'abord le framework, il y a des choses plus qu'interressante dedans !

signaler à un administrateur
Commentaire de CanisLupus le 15/01/2004 09:18:37 administrateur CS

Sans doute lumesh mais tu dois parler de .NET car en vb6, c moins évident.

signaler à un administrateur
Commentaire de jesusonline le 15/01/2004 18:35:05 administrateur CS

Ma source est une source .net et je pense comme lumesh, qu'il vaut mieux regarder dans la framework c'est souvent plus simple, Je connais pas les FSO car je suis en .net et je voulais trouver une methode pour faire ca et je me suis servis de vb sans rien d'autres

Pour ce qui est de la sub qui se transforme en function je vais rectifier ca :P

signaler à un administrateur
Commentaire de cuba1393 le 20/02/2004 16:51:02

bonjour

Searit il trop demande pour un débutant comme moi de mettre le résultat, c'est à dire tout les fichiers avec leur chemin dans un fichier texte.

Merci d'avance

signaler à un administrateur
Commentaire de CanisLupus le 20/02/2004 17:24:35 administrateur CS

Sinon, il y a un truc simple que Gandalfkhorne à publié :
http://www.vbfrance.com/code.aspx?ID=20539

Pour mettre les résultats dans un fichier texte c simple :

Avant la boucle où il y a Add ou additem, on ouvre un fichier texte :

open Fichier.txt for output as #1

et à la place du add ou additem, tu mets

print #1, fichier.Name ou print #1 fc.name (suivant l'exemple choisi)

et tu termines par un close #1

signaler à un administrateur
Commentaire de jesusonline le 20/02/2004 18:04:46 administrateur CS

listefichier("C:/")
    
          try
Dim LogStream As New StreamWriter(Fichier & ".log", True, System.Text.Encoding.UTF8)
for each s as string in listefichier

                LogStream.WriteLine(s )
next
                
        catch
                 'erreur, impossible d'ecrire dans le fichier

     finally

LogStream.Close()
        end try

Voila je sais que CanisLupus a ecrit aussi qqchose mais je sais pas si ca marche :p

signaler à un administrateur
Commentaire de jesusonline le 20/02/2004 18:04:46 administrateur CS

listefichier("C:/")
    
          try
Dim LogStream As New StreamWriter(Fichier & ".log", True, System.Text.Encoding.UTF8)
for each s as string in listefichier

                LogStream.WriteLine(s )
next
                
        catch
                 'erreur, impossible d'ecrire dans le fichier

     finally

LogStream.Close()
        end try

Voila je sais que CanisLupus a ecrit aussi qqchose mais je sais pas si ca marche :p

signaler à un administrateur
Commentaire de Belsteak le 05/07/2004 00:35:16

j'ai trouvé une autre possibilité...

dim arrlist as filesysteminfo()  ' matrice de fichiers
dim i as integer
...

Dim dirpathInfo As New DirectoryInfo(path) 'remplacez path par votre
                                                             'chemin
arrFile = dirpathInfo.GetFileSystemInfos()
' on récupère l'ensemble des fichiers du répertoire dans la matrice

For i = 0 To arrFile.GetLength(0) - 1
'on parcourre la matrice. Dans mon cas seuls les fichiers du répertoire m'intéressent sinon il faut travailler sur plusieurs dimensions. Chaque dimension représentant un sous répertoire avec ses fichiers

                        lstFiles.Items.Add(arrFile(i).Name)
'ici vous placez votre code de récup. dans mon cas, je remplis une listbox avec le nom de chaque fichiers
                    Next

et voilà, c'est dans la boite... !

signaler à un administrateur
Commentaire de UNi le 19/10/2006 09:13:15

Sympa cette source meme si il y a une autre methode sans passer par les FSO ;o)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.