Si la carpeta tambien tiene más carpetas... pues logicamente recorriendo y sumando el tamaño de solo los ficheros en raiz, no te arrojará el tamaño correcto.
Debes crear una funcion recursiva que recibe una carpeta...
Necesita pues dos bucles, el primero recorre todas las carpetas que contenga la actual, reinvocando la misma funcion con la carpeta en el bucle.
El segundo bucle recoge el tamaño de todos los ficheros en la raiz de la carpeta cuyo nombre se recibe en la funcion.
La suma se va devolviendo con cada llamada recursiva y en el retorno se va sumando...
El codigo sería más o menos asi en pseudocodigo:
p.d.: Es sencillo modificar la funcion con algún parametro adicional para permitir diferentes recorridos (por ejemplo solo el tamaño de lso ficheros en la capeta introducida, o recorre solo cierto nivel de profundidad, o sumar solo determinados tipos de ficheros, los que cumplan cierto criterio de fechas, etc... La base es esa funcion.
Debes crear una funcion recursiva que recibe una carpeta...
Necesita pues dos bucles, el primero recorre todas las carpetas que contenga la actual, reinvocando la misma funcion con la carpeta en el bucle.
El segundo bucle recoge el tamaño de todos los ficheros en la raiz de la carpeta cuyo nombre se recibe en la funcion.
La suma se va devolviendo con cada llamada recursiva y en el retorno se va sumando...
El codigo sería más o menos asi en pseudocodigo:
Código [Seleccionar]
entero = funcion GetSizeFolder( string RutaFolder)
entero size
bucle por cada Carpeta en rutafolder
size += GetsizeFolder(carpeta)
siguiente
bucle por cada fichero en RutaFolder
size += fichero.Size
Siguiente
devolver size
fin funcion
p.d.: Es sencillo modificar la funcion con algún parametro adicional para permitir diferentes recorridos (por ejemplo solo el tamaño de lso ficheros en la capeta introducida, o recorre solo cierto nivel de profundidad, o sumar solo determinados tipos de ficheros, los que cumplan cierto criterio de fechas, etc... La base es esa funcion.