Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 12, 2008, 09:58:43
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Visual Basic y Net (Moderador: ANYD00M)  |  Tema: Recorrer y listar archivos y carpetas 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Recorrer y listar archivos y carpetas  (Leído 93 veces)
ANYD00M
Moderadores
Colaborador
*****
Desconectado Desconectado

Mensajes: 744


.:Beethoven's Count:.

maxigile_tl@hotmail.com
Ver Perfil WWW Email
« en: Mayo 01, 2008, 06:35:58 »

Muchos deben conocer el objeto que ActiveX nos presta para hacer varios trabajos, este objeto es el vulgarmente llamado FSO (FileSystemObject) que nos presenta la posibilidad de listar archivos y subcarpetas desde un directorio inicial.
Lo que vamos a ver es como ir recorriendo todos los directorios de cada directorio actual en el que nos encontresmo y todos los archivos de cada directorio actual, los cuales se iran almacenando en un List, quedando todos los archivos del sistema en dicha lista. Tambien usaremos otra lista para ir agregando los directorios recorridos. Asique veamos, vamos a crear un nuevo proyecto y agregaremos:
Un List llamado lstDirectorios
Otro List llamado lstArchivos
Y un Command Button llamdo cmdComenzar

Una vez agregado todos lod controles solo resta agregar el objeto, lo cual aremos como referencia para trabajar mas comodamente, ya que al declararlo desde las referencias luego del operador punto (".") nos aparecera una lista de acciones que podremos realizar a diferencia de declararlo como objeto en modo de ejecucion que nos sera mas complicado inclucibe para encontrar errores. Asique vamos a:
Proyecto-->Referencias... y agregamos: "Microsoft Scripting Runtime" (sin comillas), lo buscamos y lo tildamos, luego hacemos clic en Aceptar y nos dirigimos a la parte de Codigo, donde haremos una declaracion global para el objeto y luego en el Form_Load lo agregaremos, lo cual nos quedaria asi:

Código: (vb)
Dim Fso As FileSystemObject

Private Form_Load()
Set Fso = New FileSystemObject
End Sub

Y agregamos el codigo que se producira al hacer clic en el boton:
Código: (vb)
Private Sub cmdComenzar_Click()
Carpeta = Fso.GetFolder("C:\")
Call Listar(Carpeta)
end sub
Bueno, ahora crearemos una rutina que tendra una particularidad, sera una funcion recursiva, es decir, que la funcion se llamara asimisma para pasarle como argumento su dierectorio actual y luego se listaran sus archivos y sus subdirectorios, asi sucecivamente hasta llegar al ultimo directorio...
Código: (vb)
Private Function Listar(ByVal dr As Folder)
Dim Sr As Folder
'Bucle por cada subdirectorio en _
 el directorio actual.
For Each Sr In dr.SubFolders
    'Agremos a la lista el subdirectorio
    lstDirectorios.AddItem Sr
Next
End Function

Bueno, aqui ya tenemos en la lista los subdirectrios de "C:\". Pero esto no es lo que nosotros queremos (aunque si es un avance), asique para lograr lisar todooos los subdirectorios dentro de los subdirectorios que se encuentran a su vez en los sbdirectorios de los subdirectorios de "C:\" (Tengan en cuenta que no nombre a todos los subdirectorios, es solo para darles una idea de lo que queremos Tongue) debemos aplicar la recursividad (nose si existe esa palabra, pero se entiendde lo que quiero decir)... Asique dentro del bucle For debemos agregar una llamada a la funcion para que liste los subdirectorios del subdirectorio actual del bucle, luego se hara lo mismo con el subdirectorio del subdirectorio, y asi hasta le final ¿no?

Código: (vb)
Private Function Listar(ByVal dr As Folder)
Dim Sr As Folder
'Bucle por cada subdirectorio en _
 el directorio actual.
For Each Sr In dr.SubFolders
    'Agremos a la lista el subdirectorio
    lstDirectorios.AddItem Sr
    'Llamamos a la funcion pasandole como _
     directorio a listar, el subdirectorio _
     en el que nos encontramos ahora:
    Call Listar Sr
Next
End Function

Bien, con ese simple codigo ya podemos listar todas las carpetas que poseas en tu disco "C:\", obviamente que si quieres listar las carpetas de otro disco debes cambiar el parametro de la llamada incluida en el Form_Load..
Ahora que podemos listar las carpetas, pasaremos a listar sus archivos, para eso debemos incluir un bucle dentro del otro bucle. El bucle que incluiremos sera asi:
Código: (vb)
For Each Fl In Sr.Files
    lstArchivos.AddItem Fl
Next

Pero antes de incluir el bucle, tendremos qu declarar la variable Fl, sino nos dara error, el tipo de la variable es File ya que va a ser un archivo lo que contendra, asique la declaramos asi:

Código: (vb)
Dim Fl as File

Ahora arreglemos el codigo:

Código: (vb)
Private Function Listar(ByVal dr As Folder)
Dim Sr As Folder
Dim Fl As File
'Bucle por cada subdirectorio en _
 el directorio actual.
For Each Sr In dr.SubFolders
    'Agremos a la lista el subdirectorio
    lstDirectorios.AddItem Sr
    'Por cada archivo del directorio actual _
     Fl contendra su ruta.
    For Each Fl In Sr.Files
        'Agregamos el archivo a la lista:
        lstArchivos.AddItem Fl
    Next
    'Llamamos a la funcion pasandole como _
     directorio a listar, el subdirectorio _
     en el que nos encontramos ahora:
    Call Listar Sr
Next
End Function

Ya lo podras usar, pero por si acaso, ponle un DoEvents en el bucle For; ya que sino es muy probable que se te tilde la aplicacion (y VB si estas depurando).

Salu2!
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Visual Basic y Net (Moderador: ANYD00M)  |  Tema: Recorrer y listar archivos y carpetas « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC