Trouver le nombre de fichiers dans un répertoire'

Résolu
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
- Modifié par vb95 le 29/10/2016 à 23:43
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
- 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

1 réponse

vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
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
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
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)
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 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
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

30 oct. 2016 à 00:05
Merci pour le code
désolé je n'ai pas vue ta répoce
je souhaite un bonne anniversaire à ton fils
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018

30 oct. 2016 à 00:07
Le fiston te dit merci
0
Karin.code
Messages postés
183
Date d'inscription
vendredi 2 septembre 2016
Statut
Membre
Dernière intervention
16 janvier 2018
2
Modifié par Karin.code le 29/10/2016 à 23:48
Merci d'avoir modifier le titre
0