Sección de códigos , trucos y ejemplos para visual basic


265 - Obtener tamaño de un directorio con FileSystemObject

<Volver> - Anterior - Siguiente



 

Ejemplo del método GetFolder de FSO y de la colección Folder para obtener atributos de un directorio o carpeta, en este caso para recuperar el tamaño de la misma

 

vista del formulario de ejemplo

vista del formulario de ejemplo para visualizar el tamaño del directorio elegido en el drivelistbox

 

En el ejemplo, al seleccionar una carpeta de un control DriveListBox, se llama a la función GetFolderLen, que retorna el tamaño en bytes. A la función hay que pasarle como parámetro la ruta del directorio. Luego se muestra el resultado en el caption del formulario.

Nota: la propiedad para recuperar el tamaño en bytes es la propiedad size de la colección Folder.

Importante. Este método no es muy recomendable utilizarlo a no ser que de antemano sepamos "que directorio deseamos comprobar", ya que puede darse el caso de que , al recuperar un directorio x, nos de permiso denegado ( por decir un error), y en ese caso la función fallará y no retornará nada, es decir la propiedad Size devolverá el valor 0.

En ese caso, (desconozco si existe alguna Api directa para realizar esto), otra opción, puede ser enumerando todos los archivos, e ir sumando el tamaño de cada uno. Utilizando este método, al detectar cualquier error, por ejemplo error 70 ( permiso denegado), se podría ignorar, y continuar en forma recursiva con el resto. En el Api Guide hay un ejemplo exactamente de esto para buscar y listar archivos en forma recursiva, o en este otro enlace.

Además otra cuestión importante a tener en cuenta , es que utilizando el método GetFolder y la propiedad Size de FSO, el programa no retornará el control a la aplicación hasta que termine de calcular el tamaño total. Aunque no se notará en directorios pequeños, puede colgar un buen rato la aplicación en directorios muy grandes, cosa que se podría evitar utilizando alguna función recursiva como la que se mensionó anteriormente ( El ejemplo del ApiGuide), y de este modo colocar un DoEvents en los bucles, e inclusive una barra de progreso o mensaje de espera.

Colocar en un nuevo proyecto

 

Código fuente en el formulario

 


Recursos Vb.Net - Enlaces relacionados

 



Buscar en Recursos vb