Cómo buscar directorios de forma recursiva mediante el uso de 2005 de Visual Basic o Visual Basic .net

Seleccione idioma Seleccione idioma
Id. de artículo: 306666 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E306666
Para un Microsoft Visual C++ 2005 y Microsoft Visual Vea la versión de este artículo,. de C++ 307009.
Para un Microsoft Visual C# 2005 y Microsoft Visual Vea la versión de este artículo, C#. 303974.
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo se muestra a través de código cómo de forma recursiva Buscar subdirectorios para los archivos, empezando por el directorio raíz. Una búsqueda se especifica la cadena de modo que puede buscar archivos que coincidan con un determinado criterios. Cada parte del código se explica según sea necesario. Un código de trabajo También se incluye el ejemplo al final del artículo.

Directorio la recursividad es una tarea común de E/S para los desarrolladores. FileSystemObject facilita esta tarea para el modelo de objetos componentes (COM) aplicaciones. Ahora esta tarea resulta más sencilla en el. de Microsoft En el marco de trabajo. Similar a FileSystemObject, las clases del espacio de nombres System.IO proporcionan un método orientado a los archivos y directorios.

Requisitos

El lista siguiente describe el hardware recomendado, software, red infraestructura y service packs que necesita:
  • Visual Studio de Microsoft 2005 o Microsoft Visual Studio .NET
Microsoft Proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía ya sea expresa o implícita. Esto incluye, pero no se limita a, la implícita garantías de comerciabilidad o idoneidad para un fin determinado. En este artículo se supone que está familiarizado con el lenguaje de programación que se está demostrada y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un un procedimiento específico, pero no modificarán estos ejemplos proporcionar agregado procedimientos de construcción o de funcionalidad para satisfacer sus requerimientos específicos.

Recursividad de directorios

Las clases de manipulación de archivos y directorios que se encuentran en el espacio de nombres System.IO . Antes de trabajar con estas clases, debe importar el siguiente espacio de nombres en el proyecto.
using System.IO;
				
Las clases del espacio de nombres System.IO ofrecen muchas opciones para trabajar con archivos y directorios. El espacio de nombres System.IO no sólo proporciona clases que se pueden crear instancias, lo También proporciona clases para utilidades de archivos y directorios. Estas clases contienen compartida métodos que se pueden llamar sin tener que declarar una variable de ese tipo. Por ejemplo, puede utilizar el objeto de directorio para obtener los subdirectorios de un determinado directorio.

El código siguiente utiliza el método compartido GetDirectories del objeto de directorio para devolver una matriz de cadenas. Esta matriz contiene nombres de ruta de directorio a los subdirectorios del directorio C:\, si existe.
Dim directories() As String = Directory.GetDirectories("C:\")
				
El objeto de directorio también contiene el método GetFiles . El método GetFiles le permite recuperar una matriz de cadenas de archivos que coincidan con un determinados criterios. Ejemplo de código siguiente utiliza el objeto File para recuperar todos los archivos en el directorio C:\ que terminan con la extensión.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
El método GetDirectories y el método GetFiles del objeto de directorio son todo lo que necesita para buscar de forma recursiva para los archivos que coincide con la cadena de búsqueda. El siguiente método se utiliza para efectuar la recursividad.
    Sub DirSearch(ByVal sDir As String)
        Dim d As String
        Dim f As String

        Try
            For Each d In Directory.GetDirectories(sDir)
                For Each f In Directory.GetFiles(d, txtFile.Text)
                    lstFilesFound.Items.Add(f)
                Next
                DirSearch(d)
            Next
        Catch excpt As System.Exception
            Debug.WriteLine(excpt.Message)
        End Try
    End Sub
				
El código anterior transfiere una cadena que contiene el directorio que que desea buscar, a DirSearch. Este valor de cadena es el nombre de ruta de acceso completa del directorio. Usted puede utilizar el método GetDirectories para recuperar los subdirectorios del directorio que es pasa al procedimiento. Dado que el método GetDirectories devuelve una matriz, puede utilizar un for/each statement para Buscar en cada subdirectorio. Para cada subdirectorio, utilice el método GetFiles para recorrer en iteración los archivos de ese directorio. El valor de el cuadro de texto en el formulario se pasa al método GetFiles . El cuadro de texto contiene la cadena de búsqueda que filtra el resultados que devuelve el método GetFiles . Si algún archivo coincide con los criterios de búsqueda, son agrega al cuadro de lista. Para cada subdirectorio que se encuentra, llame de nuevo a DirSearch y pásele un subdirectorio. Mediante el uso de esta llamada recursiva, puede buscar todos los subdirectorios de un directorio raíz determinado.

Ejemplo de código completo

  1. Iniciar un nuevo Microsoft Visual Basic 2005 o Microsoft Visual Proyecto de aplicación de Windows básico. De forma predeterminada, un formulario denominado Form1 se crea.
  2. En el menú Ver , haga clic para mostrar el Explorador de soluciones.
  3. En el Explorador de soluciones, (ratón) en Form1y, a continuación, haga clic en Ver código.
  4. En la ventana de código de Form1, resalte y, a continuación, elimine todo el código existente.
  5. Pegue el código siguiente en la ventana de código de Form1 formulario.
    Imports System.IO
    
    Public Class Form1
        Inherits System.Windows.Forms.Form
    
    #Region " Windows Form Designer generated code "
    
        Public Sub New()
            MyBase.New()
    
            'This call is required by the Windows Form Designer.
            InitializeComponent()
    
            'Add any initialization after the InitializeComponent() call.
    
        End Sub
    
        'Form overrides dispose to clean up the component list.
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub
            Friend WithEvents cboDirectory As System.Windows.Forms.ComboBox
        Friend WithEvents txtFile As System.Windows.Forms.TextBox
        Friend WithEvents lstFilesFound As System.Windows.Forms.ListBox
        Friend WithEvents lblDirectory As System.Windows.Forms.Label
        Friend WithEvents lblFile As System.Windows.Forms.Label
        Friend WithEvents btnSearch As System.Windows.Forms.Button
            Private components As System.ComponentModel.IContainer
    
        'NOTE: The following procedure is required by the Windows Form Designer.
        'You can use the Windows Form Designer to modify it; however, do not
        'use the code editor to modify it.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.btnSearch = New System.Windows.Forms.Button()
            Me.lblFile = New System.Windows.Forms.Label()
            Me.cboDirectory = New System.Windows.Forms.ComboBox()
            Me.txtFile = New System.Windows.Forms.TextBox()
            Me.lstFilesFound = New System.Windows.Forms.ListBox()
            Me.lblDirectory = New System.Windows.Forms.Label()
            Me.SuspendLayout()
            '
            'btnSearch
            '
            Me.btnSearch.Location = New System.Drawing.Point(608, 248)
            Me.btnSearch.Name = "btnSearch"
            Me.btnSearch.TabIndex = 0
            Me.btnSearch.Text = "Search"
            '
            'lblFile
            '
            Me.lblFile.Location = New System.Drawing.Point(8, 16)
            Me.lblFile.Name = "lblFile"
            Me.lblFile.Size = New System.Drawing.Size(144, 16)
            Me.lblFile.TabIndex = 5
            Me.lblFile.Text = "Search for files containing:"
            '
            'cboDirectory
            '
            Me.cboDirectory.DropDownWidth = 112
            Me.cboDirectory.Location = New System.Drawing.Point(8, 128)
            Me.cboDirectory.Name = "cboDirectory"
            Me.cboDirectory.Size = New System.Drawing.Size(120, 21)
            Me.cboDirectory.TabIndex = 2
            Me.cboDirectory.Text = "ComboBox1"
            '
            'txtFile
            '
            Me.txtFile.Location = New System.Drawing.Point(8, 40)
            Me.txtFile.Name = "txtFile"
            Me.txtFile.Size = New System.Drawing.Size(120, 20)
            Me.txtFile.TabIndex = 4
            Me.txtFile.Text = "*.dll"
            '
            'lstFilesFound
            '
            Me.lstFilesFound.Location = New System.Drawing.Point(152, 8)
            Me.lstFilesFound.Name = "lstFilesFound"
            Me.lstFilesFound.Size = New System.Drawing.Size(528, 225)
            Me.lstFilesFound.TabIndex = 1
            '
            'lblDirectory
            '
            Me.lblDirectory.Location = New System.Drawing.Point(8, 96)
            Me.lblDirectory.Name = "lblDirectory"
            Me.lblDirectory.Size = New System.Drawing.Size(120, 23)
            Me.lblDirectory.TabIndex = 3
            Me.lblDirectory.Text = "Look In:"
            '
            'Form1
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(688, 273)
            Me.Controls.AddRange(New System.Windows.Forms.Control() _
                {Me.lblFile, Me.txtFile, Me.lblDirectory, Me.cboDirectory, _
                Me.lstFilesFound, Me.btnSearch})
            Me.Name = "Form1"
            Me.Text = "Form1"
            Me.ResumeLayout(False)
    
        End Sub
    
    #End Region
    
        Private Sub btnSearch_Click(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles btnSearch.Click
            lstFilesFound.Items.Clear()
            txtFile.Enabled = False
            cboDirectory.Enabled = False
            btnSearch.Text = "Searching..."
            Me.Cursor = Cursors.WaitCursor
            Application.DoEvents()
            DirSearch(cboDirectory.Text)
            btnSearch.Text = "Search"
            Me.Cursor = Cursors.Default
            txtFile.Enabled = True
            cboDirectory.Enabled = True
        End Sub
    
        Sub DirSearch(ByVal sDir As String)
            Dim d As String
            Dim f As String
    
            Try
                For Each d In Directory.GetDirectories(sDir)
                    For Each f In Directory.GetFiles(d, txtFile.Text)
                        lstFilesFound.Items.Add(f)
                    Next
                    DirSearch(d)
                Next
            Catch excpt As System.Exception
                Debug.WriteLine(excpt.Message)
            End Try
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles MyBase.Load
            Dim s As String
            cboDirectory.Items.Clear()
            For Each s In Directory.GetLogicalDrives()
                cboDirectory.Items.Add(s)
            Next
            cboDirectory.Text = "C:\"
        End Sub
    End Class
    					
    Nota Debe cambiar el código de Visual Basic de 2005. De forma predeterminada, Visual Basic crea dos archivos para el proyecto cuando se crea un formulario Windows Forms proyecto. Si el formulario denominado Form1, son los dos archivos que representan el formulario con nombre de Form1.vb y Form1.Designer.vb. Escriba el código en el archivo Form1.vb. El Diseñador de Windows Forms escribe el código en el archivo Form1.Designer.vb. El Diseñador de Windows Forms, se utiliza la palabra clave partial para dividir la implementación de Form1 en dos archivos independientes. Este comportamiento impide que el generado por el Diseñador código de que se mezcle con el suyo.

    Para obtener más información acerca de las nuevas mejoras de lenguaje Visual Basic 2005, visite el sitio Web Sitio Web de Microsoft Developer Network (MSDN):
    http://msdn.Microsoft.com/en-us/library/ms379584 (puede) .aspx
    Para obtener más información acerca de las clases parciales y los formularios Windows Forms Diseñador, visite el siguiente sitio Web de MSDN:
    http://msdn2.Microsoft.com/es-es/library/ms171843(VS.80).aspx
  6. Presione F5 para generar y ejecutar el ejemplo.

Referencias

Para obtener más información información, haga clic en el número de artículo siguiente para verlo en el Microsoft Knowledge Base:
302309Cómo leer un archivo de texto utilizando System.IO en 2005 de Visual Basic o en Visual Basic.
Para obtener información general acerca de Visual Basic . NET, consulte el siguiente grupo de noticias de Usenet:
Visual Basic

Propiedades

Id. de artículo: 306666 - Última revisión: martes, 24 de julio de 2012 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 306666

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com