Jak rekurzivní vyhledávání adresářů pomocí jazyka Visual Basic 2005 nebo Visual Basic.NET

Překlady článku Překlady článku
ID článku: 306666 - Produkty, které se vztahují k tomuto článku.
Microsoft Visual C++ 2005 a Microsoft Visual C++ .NET verzi tohoto článku, naleznete v tématu 307009.
Microsoft Visual C# 2005 a Microsoft Visual C#.NET verzi tohoto článku, naleznete v tématu 303974.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Pomocí kódu Tento článek ukazuje, jak rekurzivně Prohledat podadresáře pro soubory, počínaje kořenový adresář. Hledání je zadán řetězec, takže můžete hledat soubory, které odpovídají určitým kritéria. Každá část kódu je vysvětlena podle potřeby. Kód pracovní vzorek je také k dispozici na konci tohoto článku.

Adresář rekurze je běžný úkol IO pro vývojáře. Na FileSystemObject usnadňuje tento úkol Component Object Model (COM) aplikace. Tento úkol stal nyní ještě jednodušší Microsoft.NET Rámec. Podobně jako FileSystemObject, třídy v System.IO obor názvů poskytuje objektově orientované způsob přístupu k souborům a adresáře.

Požadavky

Na Následující seznam obsahuje doporučený hardware, software, sítě infrastruktura a aktualizace service Pack, které potřebujete:
  • Microsoft Visual Studio 2005 nebo Microsoft Visual Studio .NET
Microsoft buď poskytuje ukázky programování pouze pro ilustraci bez žádné záruky ani předpokládané. To zahrnuje, ale není omezen pouze na, mlčky záruk obchodovatelnosti nebo vhodnosti pro určitý účel. V tomto článku předpokládá se, že jste obeznámeni s programovacím jazykem, který je prokázané a s nástroji, které slouží k vytvoření a ladění postupy. Pracovníci podpory společnosti Microsoft mohou vysvětlit funkce konkrétní postup, ale budou tyto příklady upravovat poskytování přidané funkce nebo konstrukce postupy podle svých specifických požadavků.

Adresář rekurze

Třídy manipulace s atributy souborů a adresářů jsou umístěny v System.IO obor názvů. Než začnete pracovat s těchto tříd, měli byste importovat následující obor názvů do projektu.
using System.IO;
				
Na System.IO obor názvů tříd, poskytují mnoho možností pro práci se soubory a adresáře. Na System.IO obor názvů poskytuje pouze třídy, které můžete konkretizovat, ji poskytuje také nástroje tříd souborů a adresářů. Tyto třídy obsahují sdílené metody, které lze volat bez nutnosti deklarování proměnné tohoto typu. Například můžete použít Adresář objekt získat podadresářů daném adresář.

Následující kód používá sdílené GetDirectories Metoda Adresář Objekt vrátíte pole řetězců. Toto pole obsahuje názvy adresářů cesty do podadresářů adresáře C:\, pokud existuje.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Na Adresář objekt obsahuje také GetFiles Metoda. Na GetFiles metoda umožňuje načíst pole řetězců souborů, které se shodují určitá kritéria. Následující kód používá vzorek Soubor objekt, který chcete načíst všechny soubory, které končí v adresáři C:\ s příponou DLL.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
Na GetDirectories Metoda a GetFiles Metoda Adresář objekt jsou všechny, které potřebujete rekurzivní vyhledávání souborů, odpovídat vyhledávací řetězec. Následující metody slouží k provádění rekurzi.
    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
				
Předcházející kód předá řetězec, který obsahuje adresář, Chcete-li do hledání DirSearch. Tato řetězcová hodnota je úplný název cesty adresáře. Jste můžete použít GetDirectories Metoda pro načtení podadresářů adresáře, který je předán do procedury. Protože GetDirectories Metoda vrátí matici, můžete použít pro/každý příkaz iteraci každý podadresář. Každý podadresář, použít GetFiles Metoda k iterování soubory v tomto adresáři. Hodnota textové pole na formuláři předána GetFiles Metoda. Textové pole obsahuje vyhledávací řetězec, který filtruje výsledky, které GetFiles Metoda vrátí. Pokud jsou všechny soubory odpovídající kritériím vyhledávání, jsou Přidá do vašeho seznamu. Každý podadresář je umístěn volání DirSearch znovu a jejich předávání do podadresáře. Pomocí tohoto rekurzivní volání můžete vyhledat všechny podadresáře daný kořenový adresář.

Ukázka kódu dokončena

  1. Spuštění nové aplikace Microsoft Visual Basic 2005 nebo Microsoft Visual Základní.Projekt aplikace systému Windows NET. Ve výchozím nastavení ve formuláři, který je pojmenován Formulář1 je vytvořen.
  2. V Zobrazení Klepnutím zobrazíte v aplikaci Solution Explorer nabídce.
  3. V aplikaci Solution Explorer klepněte pravým tlačítkem myši Formulář1a klepněte na tlačítko Zobrazit kód.
  4. V okně Kód formulář1, zvýrazněte a odstraňte všechny existující kód.
  5. Vložte následující kód v okně Kód Formulář1. formulář.
    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: Je nutné změnit kód v jazyce Visual Basic 2005. Ve výchozím nastavení Visual Basic vytvoří dva soubory projektu při vytvoření model Windows Forms projekt. Pokud formulář pojmenován Formulář1, jsou dva soubory, které představují formuláře pojmenovaný Form1.vb a Form1.Designer.vb. Píšete kód v souboru Form1.vb. Návrhář model Windows Forms zapíše kód v souboru Form1.Designer.vb. Na Návrhář model Windows Forms používá klíčové slovo částečné provádění rozdělení Formulář1 do dvou samostatných souborů. Toto chování zabraňuje generované designer kód je proloženo kódu.

    Další informace o nová vylepšení pro jazyk Visual Basic 2005 navštivte následující Webový server služby Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/en-us/library/ms379584 (VS.80) .aspx
    Další informace o částečné třídy a model Windows Forms Návrhář, naleznete na následujícím webu MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  6. Stisknutím klávesy F5 sestavit a spustit ve vzorku.

Odkazy

Další informace informace získáte klepnutím na následující číslo článku v následujícím článku Znalostní báze Microsoft Knowledge Base:
302309Jak číst textového souboru pomocí System.IO jazyka Visual Basic nebo Visual Basic 2005.NET
Další obecné informace o aplikaci Visual Basic .NET, naleznete v následujících diskusních skupin Usenet:
Microsoft.public.dotNET.languages.VB

Vlastnosti

ID článku: 306666 - Poslední aktualizace: 18. května 2011 - Revize: 6.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Klíčová slova: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:306666

Dejte nám zpětnou vazbu

 

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