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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
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
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
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > 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
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > 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: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
0
Rejoignez-nous