Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // OrtizOL - xCSw - http://ortizol.blogspot.com
  2.  
  3. using System;
  4. using System.IO;
  5.  
  6. namespace Receta.CSharp.R0504
  7. {
  8.     public class TamanioDirectorio
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             Console.WriteLine();
  13.            
  14.             // Valida la longitud del número de argumentos
  15.             // pasados desde la línea de comandos:
  16.             if (args.Length == 0)
  17.             {
  18.                 Console.WriteLine("Especifique una ruta de directorio para.");
  19.                 return;
  20.             }
  21.            
  22.             // Crea instancia de `DirectoryInfo` con el argumento pasado
  23.             // desde línea de comandos:
  24.             DirectoryInfo directorio = new DirectoryInfo(args[0]);
  25.            
  26.             Console.WriteLine("Tamaño total de {0}: {1} bytes.", directorio.Name,
  27.                               CalcularTamanioDirectorio(directorio, true).ToString());
  28.            
  29.             // Cierre del programa:
  30.             Console.WriteLine(Environment.NewLine);
  31.             Console.WriteLine("Fin de la aplicación. Presione Enter para finalizar.");
  32.             Console.ReadLine();
  33.            
  34.             Console.WriteLine();
  35.         }
  36.        
  37.         // Calcula el tamaño de los archivos de un directorio:
  38.         public static long CalcularTamanioDirectorio(DirectoryInfo directorio,
  39.                                                      bool incluirSubdirectorios)
  40.         {
  41.             // Acumulador de bytes:
  42.             long tamanioTotal = 0;
  43.            
  44.             // Examina todos los archivos contenidos en el directorio actual:
  45.             foreach(FileInfo archivo in directorio.EnumerateFiles())
  46.             {
  47.                 tamanioTotal += archivo.Length;
  48.             }
  49.            
  50.             // Examinación de los subdirectorios:
  51.             if (incluirSubdirectorios)
  52.             {
  53.                 foreach(DirectoryInfo subdirectorio in directorio.EnumerateDirectories())
  54.                 {
  55.                     tamanioTotal += CalcularTamanioDirectorio(subdirectorio, true);
  56.                 }
  57.             }
  58.            
  59.             return tamanioTotal;
  60.         }
  61.     }
  62. }