Created
July 7, 2015 16:10
-
-
Save Fhernd/c8efb710005604995ffc to your computer and use it in GitHub Desktop.
Cálculo del tamaño en bytes de un directorio.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment