Ako rekurzívne Vyhľadávanie adresárov pomocou 2005 Visual Basic alebo Visual Basic .net

Preklady článku Preklady článku
ID článku: 306666 - Zobraziť produkty, ktorých sa tento článok týka.
Microsoft Visual C ++ 2005 a Microsoft Visual C ++ .net verziu tohto článku, pozri 307009.
Microsoft Visual C# 2005 a Microsoft Visual C# .net verziu tohto článku, pozri 303974.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok ukazuje prostredníctvom kódu ako rekurzívne vyhľadávanie podadresárov na súbory, počnúc koreňovému adresáru. Vyhľadávanie reťazec je zadaný tak, že môžete vyhľadávať súbory, ktoré zodpovedajú určitým kritériá. Každá časť kódu je vysvetlený podľa potreby. Pracovný kód vzorka je tiež uvedený na konci tohto článku.

Adresár Rekurzia je spoločné IO úloha pre vývojárov. FileSystemObject uľahčuje túto úlohu na COM Component Object Model) aplikácie. Teraz sa stala táto úloha ešte jednoduchšie v Microsoft .net Rámec. Podobne ako FileSystemObject, tried v priestore názvov System.IO poskytujú spôsob na prístup k súborom, ktorý je objektovo-orientované a adresáre.

Požiadavky

The Nasledujúci zoznam uvádza odporúčané hardware, software, siete infraštruktúry, a balíky service pack, ktoré potrebujete:
  • Microsoft Visual Studio 2005 alebo Microsoft Visual Studio .NET
Microsoft poskytuje príklady programovacieho základňa, buď bez toho, aby boli záruky vyjadrené alebo implicitné. To zahŕňa, ale neobmedzuje sa na, implikovaných záruky obchodovateľnosti alebo vhodnosti na konkrétny účel. Tento článok predpokladá sa, že ste oboznámení s programovací jazyk, ktorý je preukázanú a nástroje, ktoré sa používajú na vytváranie a ladenie postupy. Pracovníci technickej podpory spoločnosti Microsoft môže pomôcť vysvetliť funkčnosť konkrétny postup, ale nie upravovať tieto príklady poskytovať pridanej funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky.

Rekurzia adresár

Súborov a adresárov manipulácia tried zdržiavať v priestore názvov System.IO . Pred prácou s týmito triedy, by ste importovať Tento priestor názvov do vášho projektu.
using System.IO;
				
Namespace triedy System.IO poskytnúť ďalšie možnosti pre prácu so súbormi a adresáre. System.IO namespace nielen poskytuje tried, ktoré môže vytvoriť inštanciu to tiež poskytuje súborov a adresárov pomôcku triedy. Tieto triedy obsahujú zdieľaného metódy, ktoré môžete vyvolať bez nutnosti deklaráciu premennej tohto typu. Objekt adresára môžete použiť napríklad na získanie podadresára danej adresár.

Nasledujúci kód používa spoločnú metódu GetDirectories objektu adresára vrátiť Pole reťazcov. Toto pole obsahuje názvy adresárov cestu do podadresárov adresára C:\, ak existujú.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Objekt adresára tiež obsahuje metódu GetFiles . GetFiles metóda umožňuje načítať Pole reťazcov súborov, ktoré zodpovedajú určité kritériá. Nasledujúca ukážka kódu používa súbor objekt na načítanie všetky súbory v adresári C:\, ktoré končia s príponou .dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
GetDirectories metódy a GetFiles metódy objektu adresára sú všetko, čo potrebujete rekurzívne vyhľadávanie súborov, zápas vyhľadávací reťazec. Táto metóda sa používa na uskutočňovanie rekurziu.
    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
				
Predchádzajúci kód prechádza reťazec, ktorý obsahuje adresár, chcete vyhľadávať, na DirSearch. Je to hodnota reťazca názvu úplnú cestu adresára. Ste môžete použiť metódu GetDirectories na získanie podadresáre adresára, ktorý je odovzdaná váš postup. Pretože GetDirectories metóda Vracia pole, môžete použiť pre/každý vyhlásenie Iterácia súboru po každom podadresári. Na každom podadresári, použite metódu GetFiles Iterácia súboru nad súbory v tomto adresári. Hodnota textového poľa vo formulári prechádza na metódu GetFiles . Blok textu obsahuje hľadaný reťazec, ktorý filtruje výsledky, ktoré metóda GetFiles vráti. Ak všetky súbory zodpovedajú kritériám vyhľadávania, sú pridá sa na vašom zozname. Pre každý podadresára, ktorý je umiestnený, volajte DirSearch znova a dajte ju podadresára. Pomocou tohto rekurzívneho volania, môžete vyhľadávať všetky podadresáre danej koreňovému adresáru.

Úplný kód vzorky

  1. Spustenie nového 2005 Microsoft Visual Basic alebo Microsoft Visual Základné .net Windows aplikácií project. Predvolene formulár, ktorý sa nazýva Form1 je vytvorený.
  2. V ponuke Zobraziť kliknite na položku Zobraziť riešenie Explorer.
  3. V roztoku Prieskumník kliknite pravým tlačidlom na Form1a kliknite na tlačidlo Zobraziť kód.
  4. V okne kód Form1 zvýrazniť, a potom odstráňte všetky existujúci kód.
  5. Prilepte nasledujúci kód v okne kód Form1 formulár.
    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
    					
    Poznámka Musíte zmeniť kód v jazyku Visual Basic 2005. Predvolene Visual Basic vytvorí dva súbory pre projekt, keď vytvárate formuláre systému Windows projekt. Ak formulár nazýva Form1, sú dva súbory, ktoré predstavujú forme pomenované Form1.vb a Form1.Designer.vb. Napíšete kód v súbore Form1.vb. Windows Forms Designer píše kód v súbore Form1.Designer.vb. The Windows Forms Designer používa čiastočné kľúčové slovo rozdeliť vykonávanie Form1 do dvoch samostatných súborov. Toto správanie zabraňuje generované designer kód z sú roztrúsené s váš kód.

    Ďalšie informácie o nové vylepšenia jazyk Visual Basic 2005, navštívte nasledujúce Webová lokalita webová lokalita Microsoft Developer Network (MSDN):
    .aspx http://msdn.Microsoft.com/en-us/library/ms379584 (VS.80)
    Ďalšie informácie o čiastočné tried a formuláre systému Windows Dizajnér, nájdete na nasledovnej webovej lokalite MSDN:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  6. Stlačením klávesu F5 na výstavbe a vzorky.

ODKAZY

Pre viac informácie, kliknite na nasledovné číslo článku publikovaného v Microsoft Knowledge Base:
302309Ako čítať textový súbor pomocou System.IO, v roku 2005 Visual Basic alebo Visual Basic .net
Všeobecnejšie informácie o Visual Basic .Net, nájdete v nasledovných diskusných skupín Usenet:
Visual Basic

Vlastnosti

ID článku: 306666 - Posledná kontrola: 24. júla 2012 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kľúčové slová: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 306666

Odošlite odozvu

 

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