IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Connaitre la taille d'un dossier [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 68
    Par défaut Connaitre la taille d'un dossier
    bonjour
    s.v.p si quelqu'un peut me dire comment faire en vb.net pour connaitre la taille d'un dossier et ses sous répértoires.
    merçi.

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour. Ni le dotnet framework ni les API Windows (à ma connaissance) n'exposent de méthode pour cela. Il faut donc faire ça à la main en additionnant les tailles de tous les fichiers dans ce dossier et ses sous-dossiers, en utilisant la récursivité. Et puisque l'opération peut être longue, mieux vaut la faire sur un autre thread que celui de l'UI.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Regarde de se coté là, tu devrais trouver pas mal d'info

    Pour les fichiers
    http://msdn.microsoft.com/fr-fr/libr....fileinfo.aspx

    Pour les dossiers
    http://msdn.microsoft.com/fr-fr/libr...ctoryinfo.aspx

    Pour les lecteurs
    http://msdn.microsoft.com/fr-fr/libr...driveinfo.aspx

  4. #4
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 68
    Par défaut Résoulu
    Bonjour
    merçi à DonQuiche et Merçi à notre grand réspecté Philipe lassere(cours vb.net2)
    Viola pour calculer la taille d'un répértoire j'ai utilisé cette sub:
    Calculer_LaTaille_du_répértoire.
    en utilisant l'événement click d'un bouton dont le nom est "Bttaille" et FolderBrowserDialog dont le nom est Fbd j'arrive à connaitre la taille de n'importe quel répértoire .voila tout est résumé dans le code suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    imports system.io
    public class form1
        Dim Chemin As String
        Dim v, TailleTotale As Double
        Dim Dossiers, Fichiers, Dossier
    Sub Calculer_LaTaille_du_répértoire(ByVal MonChemin As String)
     
            Dim DossiersInfo As DirectoryInfo = My.Computer.FileSystem.GetDirectoryInfo(MonChemin )
            Dossiers = DossiersInfo.GetDirectories
            Fichiers = DossiersInfo.GetFiles
            'Parcourir Les Fichiers
     
            For Each Fichier As FileInfo In Fichiers
                'lire la taille du fichier (fileinfo) et la placer dans la variable v
             v += Fichier.Length
            Next
            'Parcourir les sous-répertoires
            For Each sousRepertoire As String In Directory.GetDirectories(monchemin)
     
                'Appel de manière récursive 'Calculer_LaTaille_du_répértoire pour calculer la taille du contenu des sous répertoires.
                Calculer_LaTaille_du_répértoire(sousRepertoire)
            Next
     
        End Sub
    Private Sub Bttaille_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtParcourir.Click
            v = 0
            TailleTotale = 0
            Fbd.ShowDialog()
            chemin = Fbd.SelectedPath
            Calculer_LaTaille_du_répértoire(Chemin)
            TailleTotale = v
           msgbox("La taille de Votre répértoire est : " & v.tostring,vbinformation,"Calculer La taille d'un Répértoire")
        End Sub
     
     
    end class
    merçi encore à donquiche.
    ce que je ne comprend pas est comment utiliser cela dans un autre thread que celui de l'UI.
    merçi!!!

  5. #5
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    En résumé, il faut :
    * Créer une fonction Calculer qui prend en argument un objet. D'abord elle cast l'argument en string, puis elle appelle Calculer_LaTaille_du_répértoire. Enfin elle lève un événement Complété, voir le point n°3. Deux ou trois lignes de code.
    * Créer une fonction Démarrer qui appelera ThreadPool.QueueUserWorkItem (voir exemple) en passant en arguments Calculer et le chemin voulu. Une ligne de code.
    * S'abonner à l'événement Complété pour réagir à la fin du calcul. Attention, s'il faut manipuler l'UI depuis cet événement on devra passer par Control.Invoke. Si le handler de l'événement s'appelle QuandComplété par exemple, tu devras ajouter au début : If InvokeRequired Then Invoke(QuandComplété(...)) Else ...

  6. #6
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Tu peux calculer la taille d'un dossier sans récursion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Shared Function FolderSize(path As String) As Long
    	Dim size As Long = 0
    	Dim directoryInfo As New DirectoryInfo(path)
    	Dim files As IEnumerable(Of FileInfo) = directoryInfo.GetFiles("*", SearchOption.AllDirectories)
    	For Each file As FileInfo In files
    		size += file.Length
    	Next
     
    	Return size
    End Function
    ce que je ne comprend pas est comment utiliser cela dans un autre thread que celui de l'UI.
    Tu peux utiliser le ThreadPool ou si tu utilises .NET 4 tu peux utiliser les Task

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Tu peux calculer la taille d'un dossier sans récursion
    Effectivement, en utilisant GetFiles avec SearchOption.AllDirectories c'est cette méthode qui se charge de la récursion, j'avais oublié cette option.

  8. #8
    Membre actif
    Inscrit en
    Décembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 68
    Par défaut Résoulu
    Merçi à vous tous
    merçi à Meziantou et à donquiche
    avec vous je quiterai rapidement mon niveau débutant encore merçi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre la taille d'un dossier
    Par mcdonald dans le forum Général Python
    Réponses: 2
    Dernier message: 01/06/2006, 21h10
  2. Réponses: 7
    Dernier message: 08/06/2005, 11h04
  3. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  4. [JSP] Connaitre la taille d'un fichier
    Par dst dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/06/2004, 17h22
  5. [JVM] Connaitre la taille mémoire utilisé par les dif classe
    Par sur_uix dans le forum Général Java
    Réponses: 4
    Dernier message: 18/09/2003, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo