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
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
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)
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
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.
salut NHenry
merci pour ta réponse
cela ne fait pas longtemps que j'ai commencé a utilisé le langage vb.net, peux-tu s'il te plaît m'expliquer ta solution
merci
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)
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
30 oct. 2016 à 00:05
désolé je n'ai pas vue ta répoce
je souhaite un bonne anniversaire à ton fils
30 oct. 2016 à 00:07
Modifié par Karin.code le 29/10/2016 à 23:48