begin process at 2012 02 17 11:09:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > [.NET2] RECHERCHE LES DOSSIERS VIDES À PARTIR D'UN EMPLACEMENT

[.NET2] RECHERCHE LES DOSSIERS VIDES À PARTIR D'UN EMPLACEMENT


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Source .NET ( DotNet ) Classé sous :recherche, dossiers, vide, récursive Niveau :Débutant Date de création :02/09/2005 Date de mise à jour :29/11/2005 15:20:42 Vu / téléchargé :9 408 / 289

Auteur : Willi

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
C'est une petite fonction qui permet de rechercher les dossiers vides (sans fichiers ni sous-dossiers).
Dans cette source vous trouverez également quelques fonctions sommes toutes assez simple à comprendre sur la manipulation des fichiers/dossiers.
J'espère y avoir mis suffisamment de commentaires.
Désolé si les noms des fonctions et variables utilisées sont en anglais, je les ai récupérer d'un de mes projets personnel.

Voili voila...



Source

  • Private Function GetDirectoryNames(ByVal Path As String, Optional ByVal InSubDirectory As FileIO.SearchOption = FileIO.SearchOption.SearchTopLevelOnly) As Array
  • '--------------------------------------------------------
  • 'Récupère les noms des dossiers présent dans un dossier
  • '--------------------------------------------------------
  • Dim sFoundDir As String
  • Dim arrayDir As Array
  • Dim byteTmp As Byte = 0
  • arrayDir = Array.CreateInstance(GetType(String), NumOfDirectories(Path, InSubDirectory))
  • For Each sFoundDir In My.Computer.FileSystem.GetDirectories(Path)
  • arrayDir(byteTmp) = sFoundDir
  • byteTmp += 1
  • Next
  • Return arrayDir
  • arrayDir = Nothing
  • End Function
  • Private Function NumOfDirectories(ByVal Path As String, Optional ByVal InSubDirectory As FileIO.SearchOption = FileIO.SearchOption.SearchTopLevelOnly) As Integer
  • '--------------------------------------------------------
  • 'Renvoie le nombre de dossiers présent dans un dossier
  • '--------------------------------------------------------
  • Try
  • Return My.Computer.FileSystem.GetDirectories(Path, InSubDirectory).Count
  • Catch ex As Exception
  • Return -1
  • End Try
  • End Function
  • Private Function IsAccessDenied(ByVal DirectoryName As String) As Boolean
  • '----------------------------------------------
  • 'Determine si l'accès à un dossier est refusé
  • '----------------------------------------------
  • Dim shtCnt As Short
  • Try
  • shtCnt = My.Computer.FileSystem.GetDirectories(DirectoryName, FileIO.SearchOption.SearchTopLevelOnly).Count
  • Return False
  • Catch ex As Exception
  • Return True
  • End Try
  • End Function
  • Private Function Engine_SearchEmptyDirs(ByVal Path As String, ByRef CurrentDir As String) As Array
  • '----------------------------------------------------------
  • 'Recherche de dossiers vides (sans fichiers ni dossiers)
  • '----------------------------------------------------------
  • 'Variable locales
  • Dim sArrayRet() As String = Nothing
  • Dim k As Integer = -1
  • Dim iFiles, iFolders As Integer
  • Dim sFolder, sFolderSub As String
  • 'nom des dossiers racines
  • For Each sFolder In GetDirectoryNames(Path)
  • 'test si l'accès au dossier et refusé... si il n'y est pas alors...
  • If IsAccessDenied(sFolder) = False Then
  • CurrentDir = sFolder
  • 'récupère le nb de fichiers et sous-dossiers dans le dossier en cours (sFolder)
  • iFiles = Directory.GetFiles(sFolder).Length
  • iFolders = Directory.GetDirectories(sFolder).Length
  • 'si aucun fichiers ni sous-dossiers récupération du nom du dossier
  • If (iFolders + iFiles) = 0 Then
  • k += 1 : ReDim Preserve sArrayRet(k)
  • sArrayRet(k) = sFolder
  • End If
  • 'sous-dossiers du dossier en cours (sFolder)
  • For Each sFolderSub In Directory.GetDirectories(sFolder, "*", SearchOption.AllDirectories)
  • 'test si l'accès au dossier et refusé... si il n'y est pas alors...
  • If IsAccessDenied(sFolderSub) = False Then
  • CurrentDir = sFolderSub
  • 'récupère le nb de fichiers et sous-dossiers
  • iFiles = Directory.GetFiles(sFolderSub).Length
  • iFolders = Directory.GetDirectories(sFolderSub).Length
  • 'test si aucun fichiers ni sous-dossiers et récupère le nom du dossier
  • If (iFolders + iFiles) = 0 Then
  • k += 1 : ReDim Preserve sArrayRet(k)
  • sArrayRet(k) = sFolderSub
  • End If
  • End If
  • Next
  • End If
  • Next
  • Return sArrayRet
  • sArrayRet = Nothing
  • End Function
Private Function GetDirectoryNames(ByVal Path As String, Optional ByVal InSubDirectory As FileIO.SearchOption = FileIO.SearchOption.SearchTopLevelOnly) As Array

        '--------------------------------------------------------
        'Récupère les noms des dossiers présent dans un dossier
        '--------------------------------------------------------

        Dim sFoundDir As String
        Dim arrayDir As Array
        Dim byteTmp As Byte = 0

        arrayDir = Array.CreateInstance(GetType(String), NumOfDirectories(Path, InSubDirectory))

        For Each sFoundDir In My.Computer.FileSystem.GetDirectories(Path)
            arrayDir(byteTmp) = sFoundDir
            byteTmp += 1
        Next

        Return arrayDir

        arrayDir = Nothing

    End Function

    Private Function NumOfDirectories(ByVal Path As String, Optional ByVal InSubDirectory As FileIO.SearchOption = FileIO.SearchOption.SearchTopLevelOnly) As Integer

        '--------------------------------------------------------
        'Renvoie le nombre de dossiers présent dans un dossier
        '--------------------------------------------------------

        Try
            Return My.Computer.FileSystem.GetDirectories(Path, InSubDirectory).Count
        Catch ex As Exception
            Return -1
        End Try

    End Function

    Private Function IsAccessDenied(ByVal DirectoryName As String) As Boolean

        '----------------------------------------------
        'Determine si l'accès à un dossier est refusé
        '----------------------------------------------

        Dim shtCnt As Short

        Try
            shtCnt = My.Computer.FileSystem.GetDirectories(DirectoryName, FileIO.SearchOption.SearchTopLevelOnly).Count
            Return False
        Catch ex As Exception
            Return True
        End Try

    End Function

    Private Function Engine_SearchEmptyDirs(ByVal Path As String, ByRef CurrentDir As String) As Array

        '----------------------------------------------------------
        'Recherche de dossiers vides (sans fichiers ni dossiers)
        '----------------------------------------------------------

        'Variable locales
        Dim sArrayRet() As String = Nothing
        Dim k As Integer = -1
        Dim iFiles, iFolders As Integer
        Dim sFolder, sFolderSub As String

        'nom des dossiers racines
        For Each sFolder In GetDirectoryNames(Path)
            'test si l'accès au dossier et refusé... si il n'y est pas alors...
            If IsAccessDenied(sFolder) = False Then
                CurrentDir = sFolder

                'récupère le nb de fichiers et sous-dossiers dans le dossier en cours (sFolder)
                iFiles = Directory.GetFiles(sFolder).Length
                iFolders = Directory.GetDirectories(sFolder).Length

                'si aucun fichiers ni sous-dossiers récupération du nom du dossier
                If (iFolders + iFiles) = 0 Then
                    k += 1 : ReDim Preserve sArrayRet(k)
                    sArrayRet(k) = sFolder
                End If

                'sous-dossiers du dossier en cours (sFolder)
                For Each sFolderSub In Directory.GetDirectories(sFolder, "*", SearchOption.AllDirectories)
                    'test si l'accès au dossier et refusé... si il n'y est pas alors...
                    If IsAccessDenied(sFolderSub) = False Then
                        CurrentDir = sFolderSub

                        'récupère le nb de fichiers et sous-dossiers
                        iFiles = Directory.GetFiles(sFolderSub).Length
                        iFolders = Directory.GetDirectories(sFolderSub).Length

                        'test si aucun fichiers ni sous-dossiers et récupère le nom du dossier
                        If (iFolders + iFiles) = 0 Then
                            k += 1 : ReDim Preserve sArrayRet(k)
                            sArrayRet(k) = sFolderSub
                        End If
                    End If
                Next

            End If
        Next

        Return sArrayRet
        sArrayRet = Nothing

    End Function

 Conclusion

Je sais que beaucoup d'entre vous préfèrerons une fonctions récursive pour ce genre d'opération mais j'espère que cette source va en aider quand même quelques-uns...

Sinon dans ma fonction "Engine_SearchEmptyDirs" le second argument doit retourner le dossier en cours d'analyse mais cela ne marche pas malgré l'utilisation d'un ByRef. Alors si quelqu'un peut apporter la solution merci... :)

Utilisation de la fonction (Recherche dans le lecteur c: mais vous pouvez indiquer un dossier cela marche aussi)

Dim TabDossier() as String
Dim DossierEnCours as String
Dim i as Interger

TabDossier=Engine_SearchEmptyDirs("c:\", DossierEnCours)

For i = 0 To TabDossier.Length - 1
    ListBox1.Items.Add(TabDossier(i))
Next


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 novembre 2005 15:20:42 :
Rajout des mots clés

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) LISTVIEW SUPPORT TRI MULTI-COLONNES PAR MÉTHODES D'EXTENSION...
Source avec Zip Source avec une capture Source .NET (Dotnet) ROTATION D'ÉCRAN
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAPI2 - GRAVER UN CD AUDIO
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTRÔLES COLOR PICKER: WHEEL COLOR PICKER - SCREEN COLOR PI...
Source avec Zip Source .NET (Dotnet) [.NET3.5] EXTENSION METHODS: SUR LES CLASSES SYSTEM.IO

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna
Source avec Zip Source avec une capture CONSTRUCTION D'UNE ARBORESCENCE DOSSIERS DISQUE DANS UNE LIS... par lerouge
Source avec Zip Source avec une capture RECHERCHE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source avec une capture RECHERCHE DES FICHIERS PAR LEURS NOMS par hackoo

Commentaires et avis

Commentaire de Willi le 02/09/2005 20:27:18 administrateur CS

Désolé pour les fautes d'orthographes je viens d'en trouver quelques-unes

Commentaire de gwiwi le 03/09/2005 09:55:35

Salut,

Tres bonne source et tres bien documentée(expliquée). Justement c'est ce que je cherche, enfin, comme tu le dis, je prefere mettre en place un fonction recurvsive qui va lister tous les repertoires et fichiers a partir d'un repertoire de base mais je n'y arrive point ... si quelqu'un a un "chit" exemple ou un conseil, je suis preneur. En attendant, je vais m'inspirer de ta superbe source.

Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recherche automatique ds une combobox [ par Fonky83 ] Bonjour à tous,J'ai une combobox qui affiche des numéros de dossiers au format 5 chiffres (ex : 06144, 11589, 00233...).Je voudrais que lorsqu'on sais Recherche d'outils en VB permettant de scanner des dossiers sur un reseaux [ par kenny29 ] BonjourJe recherche des outils en Visual Basic permettant de scanner des dossiers sur un reseau?(puis apres d'afficher le contenu mais c pas obliger)M recherche selective [ par codas ] bonjour, voila, j'ai un repertoire avec plusieurs dossiers dedans. j'ai trouve un exemple de recherche de fichier sur un lecteur donné. ce que je Enumeration de Fichiers et dossiers [ par salska ] Voila j esssai depuis des heures d enumerer tous les fichiers d' un dossier (C:\temp)Le probleme c est que mon script s'arrete de chercher au premier Recherche d'un champ vide Excel via Access [ par darkspoilt ] Bonjour je veux rechercher la premiere champq vide de mon fichier excel en parcourant de colonne a colonne (gauche a droite) donc j'ai écris ceci mais recherche de dossiers [ par ledebutant07 ] Bonjour, Je suis sous VB6 Je veux avec FileSystemObjet chercher si un ou des répertoires existe. exemple:  en indiquant "999999" dans optimiser la recherche d'une case vide dans excel [ par Jacky7 ] Bonsoir à tous,J'ai realisé un prog qui permet l'écriture dans un fichier Excel, problème lorsque beaucoup de cases et de pages seront remplis j'ai pe Recherche cellule vide [ par Dominike ] Bonsoir à tous !Nouveau petit souci pour lequel je ne parviens à trouver la solution seul pour le moment.Je n'ai pas eu de difficulter à trouver la sy Rechercher dans des sous-dossiers avec dir1.path - moteur de recherche de fichier [ par rudyrudyrudyrudy ] Bonjour,Je voudrai faire un moteur de recherche pour fichierComment faire pour rechercher dans des sous-dossiers de nom encore inconnuavec :Dir1.path Excel VBA Boucle de recherche cellules vide [ par Herod1983 ] Bonjour, J'ai fais une boucle simple de recherche de cellules vide dans une colonne A et qui inscrit une valeur dans la première cellule vide trouvée.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales