Obtenir la taille d'un dossier

Résolu
rastamath69 Messages postés 45 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 9 novembre 2009 - 26 nov. 2007 à 09:54
 Novatech - 31 oct. 2023 à 15:32
Bonjour à tous,

Je cherche à connaitre la taille d'un dossier. Existe-t-il un objet qui me permettrait de faire ceci facilement?

A terme cela me permettra d'indiquer à mon utilisateur s'il peut copier ce dossier sur le disque en fonction de l'espace disponible (récupérer grâce à un objet de type DriveInfo).

merci d'avance!

Rastamath69, plus on travaille , plus on a des problèmes, donc plus on a de chances d'en résoudre! [8D]

3 réponses

cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
Modifié le 31 oct. 2023 à 19:52

Bonjour,
Checher dans la doc, est le meilleur moyen!
 

publicclass ShowDirSize
{
    publicstatic long DirSize(DirectoryInfo d)
    {   
        long Size = 0;   
        // Add file sizes.
        FileInfo[] fis = d.GetFiles();
        foreach (FileInfo fi in fis)
        {     
            Size += fi.Length;   
        }
        // Add subdirectory sizes.
        DirectoryInfo[] dis = d.GetDirectories();
        foreach (DirectoryInfo di in dis)
        {
            Size += DirSize(di);  
        }
        return(Size); 
    }
    publicstaticvoid Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.WriteLine("You must provide a directory argument at the command line.");   
        }
        else
        { 
            DirectoryInfo d = new DirectoryInfo(args[0]);
            Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, DirSize(d));
        }
    }
}


http://msdn2.microsoft.com/En-US/library/system.io.directory.aspx

<hr />
-My Blog-

3

Bonjour, je viens de lire ce post et je pense que des erreurs se sont glissées dans votre code.

  1. -Si vous utilisé la récursivité, ne déclaré pas votre variable Size dans la fonction, mais passez la en argument, sinon a chaque fois que vous appelez la fonction vous remettez Size à 0.
  2. - De plus sur l'appel de fonction récursive, il faut écrire Size = DirSize(d); sinon vous doublez la taille du dossier.

Bien a vous

0
rastamath69 Messages postés 45 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 9 novembre 2009 1
26 nov. 2007 à 13:36
Bonjour,

Merci pour ta réponse!
En fait le parcours de dossier et de sous-dossier pour additionner la taille des fichiers, c'est actuellement ce que je fais.

Et je voulais savoir si je ne me compliquais pas la vie pour rien.

Mais effectivement je n'avais pas vu cet exemple sur MSDN, ce qui sous-entend qu'aucun n'objet n'est implémenté dans le framework 2 pour aller plus vite...

Donc, réponse acceptée!!!

Rastamath69, plus on travaille , plus on a des problèmes, donc plus on a de chances d'en résoudre! [8D]
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 déc. 2007 à 16:09
Salut,

Et de ce que je sais ce type de méthode utilitaire n'y sera pas intégré.
Il y a avait un post sur un blog MSDN à ce sujet, les principales raisons étant le nombre de décisions à gérer dans ce type de tâches, comme notamment la décision de suivre les liens vers répertoires, compter le poids d'un fichier lié et toute les problématiques liées à ces softlinks, hardlinks, points de jonction etc etc, notamment en terme de gestion des références circulaires.
Bref, il vaut mieux faire sa propre implémentation.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous