Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

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

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
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.
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.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					
    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): Ďalšie informácie o čiastočné tried a formuláre systému Windows Dizajnér, nájdete na nasledovnej webovej lokalite MSDN:
  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:

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 306666 – Posledná kontrola: 07/24/2012 06:26:00 – Revízia: 3.0

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

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtsk
Pripomienky