Accueil > > > [.NET2] RECHERCHE LES DOSSIERS VIDES À PARTIR D'UN EMPLACEMENT
[.NET2] RECHERCHE LES DOSSIERS VIDES À PARTIR D'UN EMPLACEMENT
Information sur la source
Description
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
Historique
- 29 novembre 2005 15:20:42 :
- Rajout des mots clés
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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.
|
Derniers Blogs
[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET.[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET. par Patrick Guimonet
Vous l'avez peut-être déjà remarqué ? La documentation SharePoint a subit un cure de "relooking" et prend un style inspiré de Metro, donc plus sobre, plus pur, plus clair ! C'est sur fond blanc et ca ressemble à ça : Globaleme...
Cliquez pour lire la suite de l'article par Patrick Guimonet ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|