// OrtizOL - xCSw - http://ortizol.blogspot.com
using System;
using System.IO;
namespace Receta.CSharp.R0504
{
public class TamanioDirectorio
{
public static void Main(string[] args)
{
Console.WriteLine();
// Valida la longitud del número de argumentos
// pasados desde la línea de comandos:
if (args.Length == 0)
{
Console.WriteLine("Especifique una ruta de directorio para.");
return;
}
// Crea instancia de `DirectoryInfo` con el argumento pasado
// desde línea de comandos:
DirectoryInfo directorio = new DirectoryInfo(args[0]);
Console.WriteLine("Tamaño total de {0}: {1} bytes.", directorio.Name,
CalcularTamanioDirectorio(directorio, true).ToString());
// Cierre del programa:
Console.WriteLine(Environment.NewLine);
Console.WriteLine("Fin de la aplicación. Presione Enter para finalizar.");
Console.ReadLine();
Console.WriteLine();
}
// Calcula el tamaño de los archivos de un directorio:
public static long CalcularTamanioDirectorio(DirectoryInfo directorio,
bool incluirSubdirectorios)
{
// Acumulador de bytes:
long tamanioTotal = 0;
// Examina todos los archivos contenidos en el directorio actual:
foreach(FileInfo archivo in directorio.EnumerateFiles())
{
tamanioTotal += archivo.Length;
}
// Examinación de los subdirectorios:
if (incluirSubdirectorios)
{
foreach(DirectoryInfo subdirectorio in directorio.EnumerateDirectories())
{
tamanioTotal += CalcularTamanioDirectorio(subdirectorio, true);
}
}
return tamanioTotal;
}
}
}