Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 2018
-
Modifié par vb95 le 29/10/2016 à 23:43
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023
-
30 oct. 2016 à 00:07
Bonjour ou bonsoir, selon l'heure où vous lisez ce poste,
j'ai un gros problème
je veux connaître le nombre de fichiers dans mon disque dur (La partition D)
le code suivant marche pour n'importe quel autre répertoire mais pas pour la partition D :
Try TextBox1.Text = CStr(My.Computer.FileSystem.GetFiles("D:\", FileIO.SearchOption.SearchAllSubDirectories).Count) Catch ex As IOException
End Try
l'erreur suivante s'affiche :
L'accès au chemin d'accès 'D:\$RECYCLE.BIN\S-1-5-18' est refusé. d'après ce que j'ai lui le dossier "$RECYCLE.BIN" est un dossier système et on à pas les droits d'accès
j'ai trouvé un sujet similaire ici mais cela ne fonction pas :
http://www.hivmr.com/db/m1a173jkjpck8c1fpp8mks8pss71cxkm alors ma question est la suivante : comme je peux éviter ce répertoire?
aidez moi s'il vous plaît
merci pour votre future aide
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 29 oct. 2016 à 23:14
Bonsoir Karin.code
Quelques petites remarques
1) Le titre de ton post ne reflète nullement ton problème et de plus il n'est pas parlant pour quelqu'un qui aurait un problème similaire et qui chercherait sur le forum une solution
"Trouver nombre de fichiers dans un disque dur" est bien plus parlant
2) Maintenant qu'appelles-tu "fichier" pour toi ?
Un exemple ; j'ai un répertoire nommé "A" . il contient deux répertoires nommés "B" et "C" ainsi qu'un fichier texte "E.txt".
Le répertoire "B" contient 2 fichiers images et le répertoire "C" contient 3 fichiers de musique
Donc 3 répertoires et 6 fichiers . Or Windows te sortira 9 fichiers ( un répertoire pour lui est aussi un fichier )
Ma question : veux-tu seulement les fichiers ou ( les répertoires + les fichiers ) ?
3) tu retrouves exactement le même problème qu'avec le déplacement du contenu complet d'un disque Flash USB vers un répertoire que tu avais posé ( on a pas accès à tout dans Windows et fort heureusement d'ailleurs )
en attendant de te lire
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 20182 29 oct. 2016 à 23:33
Salut vb95
merci de m'avoir répondu aussi rapidement
désolé pour le titre c'est vrais ça sonne mieux avec "Trouver nombre de fichiers dans un disque dur"
es que je devrais le changer ?
je ne savais pas qu'il considérer les dossiers comme des fichiers, avec ton exemple je comprend mieux
je veux connaître seulement le nombre de fichiers (Fichiers textes, musiques, images ...etc)
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 2018 29 oct. 2016 à 23:49
J'ai changé le titre : dis-moi si il te convient
Quant au problème je l'ai résolu avec le même code que je t'avais donné l'autre fois en le modifiant un peu
Demain c'est l'anniversaire de mon fils alors tu auras aussi un cadeau lol
Un bouton sur la form et c'est parti
Imports System.Threading.Tasks Imports System.IO
Public Class Form1
Private Source As String = "D:\" ' le répertoire racine ( peut aussi être un autre répertoire --> C:\Windows par exemple ) Private compteurfichiers As Integer Private compteurrepertoires As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
compteurfichiers = 0 compteurrepertoires = 1 ' on compte le répertoire source CompterDir(New DirectoryInfo(Source)) MessageBox.Show(Source & " contient " & compteurrepertoires.ToString & " répertoires et " & compteurfichiers.ToString & " fichiers")
End Sub
Private Sub CompterDir(ByVal oSource As DirectoryInfo)
Try 'Compte tous les fichiers d'un répertoire (utilise le parallélisme pour de meilleures performances) Parallel.ForEach(oSource.GetFiles(), Sub(oFichier As FileInfo) ' on compte que les fichiers ( pas les répertoires) If oFichier.Attributes <> FileAttributes.Directory Then compteurfichiers = compteurfichiers + 1 End Sub)
'Comptage (par récursivité) de tous ses sous-répertoires For Each oSousRepertoire As DirectoryInfo In oSource.GetDirectories() ' on compte le répertoire compteurrepertoires = compteurrepertoires + 1 ' on va compter les fichiers du répertoire CompterDir(oSousRepertoire) Next Catch ex As Exception
End Try
End Sub
End Class
Bon week-end
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 29 oct. 2016 à 23:53
Pour éviter les erreurs bloquantes comme celle que tu rencontres, j'avais pris la décision de refaire la fonction t'analyse des dossier (fonction récursive) et de traiter les cas d'erreur.
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165
>
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 2018 29 oct. 2016 à 23:55
Tu as la possibilité de le modifier toi-même si nécessaire : tu as une commande "Modifier" sous le titre de ton message
De rien
29 oct. 2016 à 23:33
merci de m'avoir répondu aussi rapidement
désolé pour le titre c'est vrais ça sonne mieux avec "Trouver nombre de fichiers dans un disque dur"
es que je devrais le changer ?
je ne savais pas qu'il considérer les dossiers comme des fichiers, avec ton exemple je comprend mieux
je veux connaître seulement le nombre de fichiers (Fichiers textes, musiques, images ...etc)
Modifié par Karin.code le 29/10/2016 à 23:48
29 oct. 2016 à 23:49
Quant au problème je l'ai résolu avec le même code que je t'avais donné l'autre fois en le modifiant un peu
Demain c'est l'anniversaire de mon fils alors tu auras aussi un cadeau lol
Un bouton sur la form et c'est parti
Bon week-end
29 oct. 2016 à 23:53
29 oct. 2016 à 23:55
De rien