- Nous allons voir comment avec deux petites fonctions, calculer la taille totale d’un répertoire et afficher sa taille en Mo.
Commencez déjà par importer le namespace System.IO :
using System.IO;
- Ensuite nous allons créer une fonction récursive afin de pouvoir entrer dans les sous-répertoires.
1: private Int64 DirectoryLength(DirectoryInfo folder)
2: {
3: Int64 bytes = 0;
4: foreach (FileInfo fi in folder.GetFiles())
5: bytes += fi.Length;
6:
7: foreach (DirectoryInfo i in folder.GetDirectories())
8: bytes += DirectoryLength(i);
9:
10: return bytes;
11: }
- Cette fonction prend en paramètre un objet de type "DirectoryInfo” qui représente le dossier à analyser. Elle parcourt la liste des fichiers présents dans ce dossier et récupére leur taille. Ensuite on cherche s’il y a des sous-répertoires présents, si c’est le cas, on appelle la même fonction avec le répertoire courant.
1: private void Form1_Load(object sender, EventArgs e)
2: {
3: // Le @ permet d'échapper tous les caractères spéciaux
4: String folder = @"C:\DossierATester\";5:6: // Si le dossier n'existe pas on arrête de traitement7: if (!Directory.Exists(folder))8: return;9:10: // Le dossier existe, on peut calculer sa taille11: Int64 size = DirectoryLength(new DirectoryInfo(folder));12:13: // Ensuite on l'affiche14: Console.WriteLine("Taille du dossier '{0}' : {1} Mo", folder, size.ToMo());
15: }
Mais qu’est ce que "size.ToMo()” ?
Une méthode d’extention :
1: public static class Functions
2: {
3: public static String ToMo(this Int64 input)
4: {
5: // N02 permet d'afficher au format : 1 234.56
6: return (input / (1024 * 1024)).ToString("N02");
7: }
8: }
No comments:
Post a Comment