LISTER LES FICHIERS ET DOSSIERS AVEC OPTION RECURSIVITÉ
dvdstory
Messages postés192Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention10 août 2009
-
22 nov. 2005 à 18:49
arapahoo
Messages postés26Date d'inscriptionlundi 15 mai 2006StatutMembreDernière intervention11 juillet 2008
-
28 mars 2011 à 22:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
arapahoo
Messages postés26Date d'inscriptionlundi 15 mai 2006StatutMembreDernière intervention11 juillet 2008 28 mars 2011 à 22:57
bien sympa, ça m'as fait un bon support pour faire un export
dans une base, en adaptant à mes besoins.
Merci
ps @TOMALES1 j'aurais été intéressé par une suite
cs_tomalex1
Messages postés29Date d'inscriptionmercredi 10 février 2010StatutMembreDernière intervention22 septembre 2011 20 mars 2011 à 00:47
bonsoir,
pas mal mais j'ai rajouter a la fin des code :
Public Sub listeRepertoire(ByVal dir As String)
...
Application.DoEvents()
End Sub
Public Sub listeFichier(ByVal dir As String)
...
Application.DoEvents()
End Sub
cela évite de ne pas mettre l'application en "Ne répond pas" comme ca on peut toujours cliqué sur les checkbox de recherche de fichier et dossier pour arrêté la recherche
surtout quand on a un disque dur de 2 To donc la moitié est utiliser ^^ avec des millions ou des milliards de fichiers
Ps: j'ai noté 9/10 dommage que la parti sauvegarde n'est pas faite mais j'ai déjà commencer a la faire pour moi si quelqu'un la veux je vous l'envoie.
OneHacker
Messages postés1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 17 juin 2007 à 16:17
Est-ce que ton code est asynchrone en tout cas moi je refais tout mon programme.
OneHacker
Messages postés1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 1 juil. 2006 à 00:15
Ah je me rend compte que ce type de source est déjà créer, je te met 8/10 je vais voir ce que je peux améliorer voici mon prog.
imed2nsi
Messages postés4Date d'inscriptionmercredi 14 décembre 2005StatutMembreDernière intervention 9 mars 2006 15 déc. 2005 à 00:35
c'est vraiment parfait.
g pas encore trouver des problemes!
AlKaponn
Messages postés3Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention29 novembre 2005 29 nov. 2005 à 14:57
oh la la !
Tu sais bien que ce n'est pas une manière propre de programmer avec les labels/goto/resume next.
Aujourd'hui on utilise les try/catch/finally (avec le .NET framework 1.1 et sup.).
Pour traiter ce problème, je place un filtre pour que la fonction ne soit appelée que lorsque le répertoire n'est pas un répertoire système mais ça ne marche pas terrible (sans doute parce que le répertoire a d'autres attributs en plus d'être un dossier système. Je dois peut-être ignorer un attribut en particulier.).
fenhryl
Messages postés4Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention29 novembre 2005 29 nov. 2005 à 13:59
J'avoue ne pas avoir essaye en tant que simple utilisateur, cependant, certains dossiers, comme les "system Volum Information" me posait effctivement des problemes.
je l'ai resolu en indiquant: On Error Resume Next devant mes boucles recursives, si une erreur se presente, le programme ne provoque pas d'erreur et passe au dossier suivant.
AlKaponn
Messages postés3Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention29 novembre 2005 28 nov. 2005 à 10:16
Bonjour,
Il a été tellement difficile de trouver du code permettant de faire une recherche sur un dique (tous les lecteurs d'un PC, avec ou sans les lecteurs réseau) que je l'ai réalisé moi-même (VB.NET2003, OS:XP Pro) : une fonction récursive appellée autant de fois qu'il y a de sous-dossiers.
Le problème que je rencontrais est le suivant : lorsque l'utilisateur n'est pas l'administrateur, la recherche plantait pour des raisons de sécurité (impossible d'explorer les sous-dossiers système ou non autorisés).
Je n'ai pas essayé ton programme mais traite t-il des problèmes de sécurité ?
Merci.
A+
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 24 nov. 2005 à 08:42
Ok, il y a deux attributs inconnus de VBExpress qu'il faut supprimer pour que ca compile, et après c'est OK, sauf que le formulaire est trop grand : tu devrais le faire plus petit avec ancrage des controles lorsque l'on agrandit le formulaire : avec VBExpress je crois que c'est moins difficile à faire qu'avec VB7.
fenhryl
Messages postés4Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention29 novembre 2005 23 nov. 2005 à 17:38
le zip a ete mis a jour, dsl ;)
je prend note de ton code, j'en aurai besoin pour la partie sauvegarde apres
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 23 nov. 2005 à 16:32
Le zip n'est pas complet pour compiler, il manque un dossier et le fichier .sln
A propos, je suis en train de faire un logiciel pour zipper une arborescence de fichier :
Public Function bZipperArbo(ByVal sCheminArbo$) As Boolean
' Zipper une arborescence de fichiers
Dim Files$() = IO.Directory.GetFileSystemEntries(sCheminArbo)
Dim sElement$
For Each sElement In Files
If m_bAnnuler Then Exit Function
If IO.Directory.Exists(sElement) Then
' L'élement est un sous-dossier : le zipper
If Not bZipperArbo(sElement) Then Exit Function
Else
' Sinon zipper le fichier
Dim sCheminFichier$ = IO.Path.GetFullPath(sElement)
Dim sFichier$ = IO.Path.GetFileName(sElement)
If Not bZipperFichier(sCheminFichier, sFichier) Then
m_bAnnuler = True
Exit Function
End If
End If
ElementSuivant:
Next sElement
bZipperArbo = True
End Function
ADSLASDL
Messages postés4Date d'inscriptionjeudi 21 avril 2005StatutMembreDernière intervention12 avril 2007 23 nov. 2005 à 13:34
En effet, la version du Framework était la cause. Bien joué Fenhryl, merci
fenhryl
Messages postés4Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention29 novembre 2005 23 nov. 2005 à 12:43
Sinon ce petit programme a ete ecrit sous visual basic 2005 express et fonctionne avec le framework 2.0 (peut etre pour ca que tu ne peut pas ouvrir le projet)
ADSLASDL
Messages postés4Date d'inscriptionjeudi 21 avril 2005StatutMembreDernière intervention12 avril 2007 23 nov. 2005 à 09:57
Bonjour,
ton code m'intéresse fortement mais malheureusement pas moyen de l'ouvrir ton projet.
L'exe est impossible à télécharger.
Merci
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 22 nov. 2005 à 22:59
Certes, le VB .NET n'apporte pas grand chose par rapport à VB6. Cependant, VB6 reste "limité" sur certaines fonctionnalités. En effet, c'est un peu laborieux de gerer des threads en VB, des pointeurs, traiter l'heritage, etc...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 nov. 2005 à 22:15
Ce n'est pas vraiment l'endroit pour parler de cà, mais si tu as commencer par le VB.NET, je ne peux que te conseiller d'y rester : si tu passe au C# ou au C++.NET, tu n'y gagneras rien : quasiment les même fonctionnalités, avec la même rapidité d'éxécution (limité par le Framework), mais surtout, ca demandera plus de temps de développement pour faire le même programme qu'en VB.NET ! Ca fait juste plus "pro" sur un CV de programmer en C quelque chose, alors que le VB est encore mal vu, ce qui est bien dommage !
Passer au C++ te demandera beaucoup de courage : avec VB.NET, on a tendance à ne pas chercher plus loin que ce qui est proposé dans le Framework (vu qu'il est très complet), or en C++, il faut chercher en permanence des librairies permettant de faire telle ou telle chose.
Passer au Java ? Autant rester au .NET : Java est plus lourd, moins rapide, moins rapide à développer, plus compliqué à utiliser, mais portable à 100%, et permet de faire des applets, c'est vrai !
DarK Sidious
dvdstory
Messages postés192Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention10 août 2009 22 nov. 2005 à 21:50
J'ai aucune expérience du langage C# et C++.
Car au tout début j'ai que programmé en langage web comme l'HTML, JavaScript, PHP.
Et ensuite le VB.NET est mon premier vrai langage de programmmation pour faire des progs contrairement au langage web qui sont interprétés.
Je compte changer de langage de programmation d'ici peu, mais je sais pas vers quoi m'orienter.
Pourquoi pas le C# ou le C++ mais j'avais pensé au JAVA.
Qu'en penses-tu ?
Est-ce qu'il y a beaucoup de diférence entre le C#, C++, C#.NET, C++.NET.
Pour la JAVA sa ira je sais un peu à quoi sa ressemble.
Merci d'avance
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 nov. 2005 à 21:35
DVDSTORY : faut pas trop se poser la question concernant le .NET : il est tellement différent de vb6, et apporte si peu que beaucoup ont laissé tombé le vb pour se diriger vers C#, C++ ou ont continué en vb6. (c'est mon cas d'ailleurs !)
DarK Sidious
fenhryl
Messages postés4Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention29 novembre 2005 22 nov. 2005 à 20:38
Merci ;)
Ceci dit, sur VBfrance, j'en ai recherche j'en ai vu 3 ou 4 differents, mais manquait toujours le petit truc qu je voulais :D
dvdstory
Messages postés192Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention10 août 2009 22 nov. 2005 à 18:49
Tu te trompe des code comme les tien y en pas ten que sa sur internet. Encore moins sur vbfrance, surtout en ce qui concerne le .NET. Sur vbfrance il ni a pas beaucoups de code .net
Il y en a surement moins de 20%.
Donc ta source est très utile. ( C'est la seul que je connaisse en VB.NET qui traite ce sujet)
28 mars 2011 à 22:57
dans une base, en adaptant à mes besoins.
Merci
ps @TOMALES1 j'aurais été intéressé par une suite
20 mars 2011 à 00:47
pas mal mais j'ai rajouter a la fin des code :
Public Sub listeRepertoire(ByVal dir As String)
...
Application.DoEvents()
End Sub
Public Sub listeFichier(ByVal dir As String)
...
Application.DoEvents()
End Sub
cela évite de ne pas mettre l'application en "Ne répond pas" comme ca on peut toujours cliqué sur les checkbox de recherche de fichier et dossier pour arrêté la recherche
surtout quand on a un disque dur de 2 To donc la moitié est utiliser ^^ avec des millions ou des milliards de fichiers
Ps: j'ai noté 9/10 dommage que la parti sauvegarde n'est pas faite mais j'ai déjà commencer a la faire pour moi si quelqu'un la veux je vous l'envoie.
17 juin 2007 à 16:17
1 juil. 2006 à 00:15
http://www.vbfrance.com/code.aspx?ID=37122
15 déc. 2005 à 00:35
g pas encore trouver des problemes!
29 nov. 2005 à 14:57
Tu sais bien que ce n'est pas une manière propre de programmer avec les labels/goto/resume next.
Aujourd'hui on utilise les try/catch/finally (avec le .NET framework 1.1 et sup.).
Pour traiter ce problème, je place un filtre pour que la fonction ne soit appelée que lorsque le répertoire n'est pas un répertoire système mais ça ne marche pas terrible (sans doute parce que le répertoire a d'autres attributs en plus d'être un dossier système. Je dois peut-être ignorer un attribut en particulier.).
29 nov. 2005 à 13:59
je l'ai resolu en indiquant: On Error Resume Next devant mes boucles recursives, si une erreur se presente, le programme ne provoque pas d'erreur et passe au dossier suivant.
28 nov. 2005 à 10:16
Il a été tellement difficile de trouver du code permettant de faire une recherche sur un dique (tous les lecteurs d'un PC, avec ou sans les lecteurs réseau) que je l'ai réalisé moi-même (VB.NET2003, OS:XP Pro) : une fonction récursive appellée autant de fois qu'il y a de sous-dossiers.
Le problème que je rencontrais est le suivant : lorsque l'utilisateur n'est pas l'administrateur, la recherche plantait pour des raisons de sécurité (impossible d'explorer les sous-dossiers système ou non autorisés).
Je n'ai pas essayé ton programme mais traite t-il des problèmes de sécurité ?
Merci.
A+
24 nov. 2005 à 08:42
23 nov. 2005 à 17:38
je prend note de ton code, j'en aurai besoin pour la partie sauvegarde apres
23 nov. 2005 à 16:32
A propos, je suis en train de faire un logiciel pour zipper une arborescence de fichier :
Public Function bZipperArbo(ByVal sCheminArbo$) As Boolean
' Zipper une arborescence de fichiers
Dim Files$() = IO.Directory.GetFileSystemEntries(sCheminArbo)
Dim sElement$
For Each sElement In Files
If m_bAnnuler Then Exit Function
If IO.Directory.Exists(sElement) Then
' L'élement est un sous-dossier : le zipper
If Not bZipperArbo(sElement) Then Exit Function
Else
' Sinon zipper le fichier
Dim sCheminFichier$ = IO.Path.GetFullPath(sElement)
Dim sFichier$ = IO.Path.GetFileName(sElement)
If Not bZipperFichier(sCheminFichier, sFichier) Then
m_bAnnuler = True
Exit Function
End If
End If
ElementSuivant:
Next sElement
bZipperArbo = True
End Function
23 nov. 2005 à 13:34
23 nov. 2005 à 12:43
Sinon ce petit programme a ete ecrit sous visual basic 2005 express et fonctionne avec le framework 2.0 (peut etre pour ca que tu ne peut pas ouvrir le projet)
23 nov. 2005 à 09:57
ton code m'intéresse fortement mais malheureusement pas moyen de l'ouvrir ton projet.
L'exe est impossible à télécharger.
Merci
22 nov. 2005 à 22:59
22 nov. 2005 à 22:15
Passer au C++ te demandera beaucoup de courage : avec VB.NET, on a tendance à ne pas chercher plus loin que ce qui est proposé dans le Framework (vu qu'il est très complet), or en C++, il faut chercher en permanence des librairies permettant de faire telle ou telle chose.
Passer au Java ? Autant rester au .NET : Java est plus lourd, moins rapide, moins rapide à développer, plus compliqué à utiliser, mais portable à 100%, et permet de faire des applets, c'est vrai !
DarK Sidious
22 nov. 2005 à 21:50
Car au tout début j'ai que programmé en langage web comme l'HTML, JavaScript, PHP.
Et ensuite le VB.NET est mon premier vrai langage de programmmation pour faire des progs contrairement au langage web qui sont interprétés.
Je compte changer de langage de programmation d'ici peu, mais je sais pas vers quoi m'orienter.
Pourquoi pas le C# ou le C++ mais j'avais pensé au JAVA.
Qu'en penses-tu ?
Est-ce qu'il y a beaucoup de diférence entre le C#, C++, C#.NET, C++.NET.
Pour la JAVA sa ira je sais un peu à quoi sa ressemble.
Merci d'avance
22 nov. 2005 à 21:35
DarK Sidious
22 nov. 2005 à 20:38
Ceci dit, sur VBfrance, j'en ai recherche j'en ai vu 3 ou 4 differents, mais manquait toujours le petit truc qu je voulais :D
22 nov. 2005 à 18:49
Il y en a surement moins de 20%.
Donc ta source est très utile. ( C'est la seul que je connaisse en VB.NET qui traite ce sujet)
Merci beaucoup