Momentan sunteți offline, așteptați să vă reconectați la internet

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

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
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.
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.IOPublic 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 SubEnd 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): Pentru mai multe informaţii despre clasele parţială şi formularele Windows Proiectant, vizitaţi următorul site MSDN Web:
  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:

Avertisment: acest articol a fost tradus automat

Proprietăți

ID articol: 306666 - Ultima examinare: 07/24/2012 06:25:00 - Revizie: 1.0

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtro
Feedback