Cum să recursiv căutare directoare utilizând 2005 Visual Basic sau Visual Basic .net

Traduceri articole Traduceri articole
ID articol: 306666 - View products that this article applies to.
Pentru un Microsoft Visual C++ 2005 și Microsoft Visual C++ .net versiune a acestui articol, consultați 307009.
Pentru un Microsoft Visual C# 2005 și Microsoft Visual C# .net versiune a acestui articol, consultați 303974.
Măriți totul | Reduceți totul

În această pagină

Rezumat

Prezentul articol demonstrează prin codul cum să recursiv subdirectoare de căutare pentru fișiere, incepand cu un root sincer. O căutare șir este specificată astfel încât să puteți căuta fișiere care se potrivesc cu un anumit criterii. Fiecare parte din cod este explicat după cum este necesar. Un cod de lucru proba este furnizat, de asemenea, la sfârșitul articolului.

Director Recursivitatea este o sarcină IO comune pentru dezvoltatori. FileSystemObject face această sarcină ușor pentru Component Object Model (COM) aplicații. Această activitate a devenit acum chiar și mai ușor în Microsoft .net Cadru. Similar cu FileSystemObject, clasele în spațiul de nume System.IO oferă un mod orientat pe obiect pentru a accesa fișiere și directoare.

Cerin?ele

The Listă tabel următoare evidențiază hardware recomandate, software, rețea infrastructură și pachete de service care aveți nevoie:
  • Microsoft Visual Studio 2005 sau Microsoft Visual Studio .NET
Microsoft furnizează exemple de programare pentru ilustrare numai, fără garanție fie explicite sau implicite. Aceasta include, dar nu se limitează la implicite garan?iile implicite de vandabilitate sau aplicabilitate pentru un anumit scop. Acest articol presupune că sunteți familiarizat cu limbaj de programare care este în curs de demonstrează ?i cu instrumente care sunt utilizate pentru a crea și a depana procedurile. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei procedură specială, dar ele nu va modifica aceste exemple să furnizeze adaugă procedurile de funcționalitate sau construi pentru a îndeplini cerințele dumneavoastră specifice.

Recursivitatea director

Clase de manipulare fișiere și directorul locuiesc în spațiul de nume System.IO . Înainte de a se lucra cu aceste clase, ar trebui să importați spațiul de nume următoarele în proiectul dumneavoastră.
using System.IO;
				
Clasele System.IO spațiul de nume furnizează mai multe opțiuni pentru lucrul cu fișiere și directoare. Spațiul de nume System.IO oferă nu doar clase care aveți posibilitatea să instantiate, acesta de asemenea, furnizează fișierul și directorul clase de utilitate. Aceste clase conțin partajate metodele pe care o puteți apela fără a declara o variabilă de acest tip. De exemplu, utilizați obiectul director pentru a obține subdirectoare de o anumită director.

Următorul cod utilizează metoda partajată GetDirectoriesDirectory obiectului să returneze un array de siruri de caractere. Această matrice conține directorul nume de sign-in de calea la subdirectories de directorul C:\, dacă este cazul.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Obiectul Directory conține, de asemenea, metoda GetFiles . Metoda GetFiles vă permite să regăsiți o matrice de șir de fișiere care se potrivesc cu un anumite criterii. Următoarea mostră de cod utilizează obiectul fișierului pentru a regăsi toate fișierele în directorul C:\ acest scop cu extensia .dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
Metoda GetDirectories și metoda GetFiles obiectului director sunt tot ce aveți nevoie pentru a căuta recursiv fișiere care meci șirul de căutare. Următoarea metodă se utilizează pentru a efectua recursivitate.
    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
				
Codul precedent trece un șir, care con?ine directorul care doriți să căutați, să DirSearch. Această valoare șir este nume de sign-in cale completă a directorului. Tu Puteți utiliza metoda GetDirectories pentru a prelua subdirectoare directorului care este trecut în procedura de dumneavoastră. Deoarece metoda GetDirectories întoarce o matrice, puteți utiliza o pentru/fiecare declarație repeta peste fiecare subdirector. Pentru fiecare subdirector, utilizați metoda GetFiles pentru a repeta peste fișierele din acel director. Valoarea caseta de text din formular este trecut la metoda GetFiles . Caseta de text conține șirul de căutare care filtrează rezultatele care returnează un metodă GetFiles . Dacă fișierele se potrivesc criteriilor de căutare, ele sunt adaugă dumneavoastră caseta listă. Pentru fiecare subdirector care este situat, apel sosit DirSearch din nou și să-l dați un subdirector. Utilizând acest apel sosit recursivă, Aveți posibilitatea să căutați toate subdirectoare de o anumită root sincer.

Mostră de cod complet

  1. Începe un nou Microsoft Visual Basic 2005 sau Microsoft Visual Bază aplicație Windows .net proiect. implicit, un formular care este numit Form1 este creat.
  2. În meniul vizualizare Proiect , faceți clic pe pentru a afișa soluție Explorer.
  3. În solu?ie Explorer, faceți clic dreapta pe Form1și apoi faceți clic pe vizualizare Proiect cod.
  4. În fereastra de cod Form1, evidențiați și ștergeți toate codul-sursă existent.
  5. Lipiți următorul cod în fereastra code de Form1 formular.
    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
    					
    Notă Trebuie să modificați codul în 2005 Visual Basic. implicit, Visual Bază creează două fișiere pentru proiect atunci când creați o formulare Windows proiect. Dacă formularul este numit Form1, cele două fișiere care reprezintă forma sunt Form1.vb numit și Form1.Designer.vb. Scrieți codul în fișierul Form1.vb. Proiectantul de formulare Windows scrie codul în fișierul Form1.Designer.vb. The Designer de forme Windows utilizează cuvântul cheie parțială pentru a împărți punerea în aplicare a Form1 în două fișiere separate. Acest comportament împiedică generate de designer de codul din fiind intercalate cu codul dumneavoastră.

    Pentru mai multe informații despre nou 2005 Visual Basic limba enhancements, vizitați următorul site web Rețea Microsoft pentru dezvoltatori (MSDN):
    http://msdn.Microsoft.com/en-us/library/ms379584 (VS.80) .aspx
    Pentru mai multe informații despre clasele parțială și formularele Windows Proiectant, vizitați următorul site MSDN Web:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  6. Apăsați F5 pentru a construi și a alerga e?antionului.

Referințe

Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:
302309Cum se citește un fișier text utilizând System.IO în 2005 Visual Basic sau Visual Basic .net
Pentru informații mai generale despre Visual Basic .Net, consultați următoarele știri Usenet:
Visual Basic

Proprietă?i

ID articol: 306666 - Ultima examinare: 24 iulie 2012 - Revizie: 1.0
Se aplică la:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Cuvinte cheie: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 306666

Trimite?i feedback

 

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