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

Windows Forms Discussion :

parcourir les fichiers d'un dossier, fichier par fichier


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut parcourir les fichiers d'un dossier, fichier par fichier
    bonjour,

    je souhaiterais naviguer dans un dossier qui contient plus de 100.000 fichiers et parcourir les fichiers de façon indépendante.

    Car si j'utilise GetFiles:

    string []dir = Directory.GetFiles(Path);

    cela me crée un tableau trop volumineux et prend trop de temps.

    est il possible donc de parcourir un dossier entrée par entrée en faisant par exemple comme en delphi avec FindFirst et FindNext ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu peux utiliser les API Windows FindFirstFile (ou FindFirstFileEx) et FindNextFile, via l'interop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    static extern IntPtr FindFirstFile(string lpFileName, out WIN32_FIND_DATA
       lpFindFileData);
     
    [DllImport("kernel32.dll")]
    static extern IntPtr FindFirstFileEx(string lpFileName, FINDEX_INFO_LEVELS
       fInfoLevelId, IntPtr lpFindFileData, FINDEX_SEARCH_OPS fSearchOp,
       IntPtr lpSearchFilter, uint dwAdditionalFlags);
     
    [DllImport("kernel32.dll")]
    static extern bool FindNextFile(IntPtr hFindFile, out WIN32_FIND_DATA
       lpFindFileData);

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    ce Lien :

    T'indiquera les "correspondances" API Win32 et Framework .Net

    Et on voit clairement que pour FindFirst, etc.. il n'y a pas d'équivalent autre
    que ceux correspondant à DirectoryInfo

    Désolé

    The Monz, Toulouse

    PS : pour info, pour avoir le code C# d'import d'une fonction Win32

    www.pinvoke.net

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    PS : pour info, pour avoir le code C# d'import d'une fonction Win32

    www.pinvoke.net
    C'est de là que viennent les déclarations que j'ai postées... très utile ce site

  5. #5
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    merci pour ces réponses intéressantes.

    Cependant j'aurais aimé avoir l'équivalent en dotnet pour la portabilité et le code managé.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par gregcat Voir le message
    Cependant j'aurais aimé avoir l'équivalent en dotnet pour la portabilité et le code managé.
    Ca n'existe pas apparemment... mais il est clair que c'est un manque. J'aurais bien vu une fonction GetFiles qui renvoie un IEnumerable<string> au lieu d'un string[], ça aurait été plus pratique.

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Citation Envoyé par tomlev Voir le message
    C'est de là que viennent les déclarations que j'ai postées... très utile ce site
    Surtout avec les interfaces vu que c'est un peu compliqué à marshaler...

    Citation Envoyé par tomlev Voir le message
    Ca n'existe pas apparemment... mais il est clair que c'est un manque. J'aurais bien vu une fonction GetFiles qui renvoie un IEnumerable<string> au lieu d'un string[], ça aurait été plus pratique.
    Pourtant avec une méthode d'extension avec un paramètre IEnumerable<T> fonctionne avec les tableaux... on peut même renvoyer un IEnumerable<T>...

  8. #8
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    bon bien je vais utiliser les tableaux, après tout ajourd'hui avec la croissance rapide des capacités informatiques doit on se soucier de la mémoire et des performances...., et merci beaucoup de votre aide.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par harz62 Voir le message
    Pourtant avec une méthode d'extension avec un paramètre IEnumerable<T> fonctionne avec les tableaux... on peut même renvoyer un IEnumerable<T>...
    Oui, il y a la méthode d'extension AsEnumerable<T>, mais ça ne change rien au problème... la liste des fichiers est quand même entièrement chargée en mémoire par la méthode GetFiles.

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Le mieux c'est un renvoyer un IEnumerable à la place des tableaux

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

Discussions similaires

  1. Recuperer les noms des sous-dossiers et des fichiers
    Par elkhansa dans le forum VBScript
    Réponses: 4
    Dernier message: 21/11/2012, 14h02
  2. Réponses: 0
    Dernier message: 03/09/2010, 10h48
  3. Réponses: 5
    Dernier message: 12/03/2009, 14h52
  4. Réponses: 5
    Dernier message: 30/04/2007, 11h53
  5. Réponses: 31
    Dernier message: 30/09/2006, 22h08

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