Як рекурсивного каталогів за допомогою Visual Basic 2005 або Visual Basic .net

Переклади статей Переклади статей
Номер статті: 306666 - Показ продуктів, яких стосується ця стаття.
Для Microsoft Visual c + + 2005 і Microsoft Visual C++ .net версія цієї статті, перегляньте 307009.
Для Microsoft Visual C# 2005 і Microsoft Visual C# .net версія цієї статті, перегляньте 303974.
Розгорнути все | Згорнути все

На цій сторінці

Підсумки

У даній статті описується через код як рекурсивно Пошук підкаталогу файли, починаючи з кореневого каталогу. Пошук рядок зазначені так що ви можете шукати файли, які відповідають певним критерії. Кожна частина коду пояснюється як необхідно. Код працювати зразок також надається в кінці статті.

Каталог рекурсія це звичайне завдання вводу-ВИВОДУ для розробників. FileSystemObject робить це завдання легко для моделі компонентних об'єктів (COM) додатків. Тепер це завдання стало ще зручніше в Microsoft .net Рамки. Подібно до FileSystemObject, класів в просторі імен System.IO забезпечити це об'єктно орієнтований спосіб доступу до файлів і каталоги.

Вимоги

На цьому списку описано рекомендованих устаткування, Підтримка програмного забезпечення, мережі інфраструктура та пакети оновлень, потрібні:
  • Microsoft Visual Studio 2005 або Microsoft Visual Studio .NET
Microsoft надає приклади програмного коду тільки для ілюстрації без гарантій або явно виражених або інших. Це включає, але не обмежуючись, що мається на увазі гарантії товарної придатності або придатності для конкретної мети. У цій статті припускає, що ви знайомі з мови програмування, який в даний Вільний час продемонстрували і з інструменти, які використовуються для створення і налагодження процедури. Співробітники представник служби підтримки клієнтів корпорації Майкрософт можуть пояснити можливості з на зокрема процедура, але вони не будуть змінювати приклади для надання додав функціональність або будівництво процедури на вимогу окремих користувачів.

Каталог рекурсія

Файлів і каталогів маніпуляції класи проживати в System.IO простір імен. Перш ніж працювати з цих класів, слід імпортувати таке простір імен у ваш проект.
using System.IO;
				
System.IO простір імен класи надають багато параметрів для роботи з файлами та каталоги. System.IO простір імен не тільки забезпечує класи, які ви можете екземпляр, його також надає каталогів і файлів службових класів. Ці класи містять спільні методи, які можна викликати без того, щоб оголосити змінна типу. Наприклад, можна використовувати об'єкт каталогу отримати у теках, вкладених у даній Каталог.

Наступний код використовує спільні GetDirectories метод Каталог об'єкта, щоб повернути масиву рядків. Цей масив містить Каталог імена шлях до підтеки c: \ каталог, якщо будь-який.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Каталог об'єкт також містить GetFiles методу. GetFiles метод дозволяє отримати рядок масиву файли, які відповідають за певним критеріям. Нижченаведений зразок коду використовує файл об'єкта для отримання всіх файлів в каталозі c: \, які закінчуються з розширенням DLL.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
Метод GetDirectories і GetFiles метод Каталог об'єкта є все, що вам потрібно рекурсивний пошук файлів які матч рядок пошуку. Такий метод використовується для виконання рекурсія.
    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
				
Попередній код проходить рядок, який містить каталог що потрібно виконати пошук, щоб DirSearch. Значення рядка є повний шлях до файлу каталогу. Ви можна використовувати GetDirectories метод для отримання підкаталогу в каталозі, є прийнятий до вашої процедури. Тому, що GetDirectories метод повертає масив, ви можете використовувати це для/кожного заяву до перебором кожного підкаталогу. Для кожного підкаталог скористайтеся методом GetFiles перебором файли в цій папці. Значення напис на формі передається по методу GetFiles . текстове поле містить рядок пошуку, які фільтри на Результати, що GetFiles метод повертає. Якщо будь-які файли, які відповідають умовам пошуку, вони додано до вашого списку. Для кожного підкаталог знаходиться зателефонуйте DirSearch знову і передати його підкаталог. За допомогою цього виклику рекурсивний Ви можете знайти всі підкаталоги даного кореневого каталогу.

Повний код зразка

  1. Почати новий Microsoft Visual Basic 2005 або Microsoft Visual Основні .net Windows застосування проекту. За промовчанням, форми, що називається Form1 створений.
  2. У меню Вигляд виберіть пункт Відобразити рішення Explorer.
  3. Рішення Internet Explorer клацніть правою кнопкою миші Form1та натисніть кнопку Переглянути код.
  4. У вікні коду Form1 виділити а потім видаліть все, що існуючий код.
  5. Вставте наступний код в вікно коду на Form1 форми.
    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
    					
    Примітка Слід змінити код Visual Basic 2005 року. За промовчанням, Visual Basic створює два файли для проекту під Вільний час створення форми Windows проект. Якщо форма називається Form1, є два файли, які представляють форми іменований Form1.vb і Form1.Designer.vb. Ви пишете код у файлі Form1.vb. Конструктор форм Windows пише код у файлі Form1.Designer.vb. На Конструктор форм Windows використовує часткового ключове слово розділити виконання Форма Form1 до двох окремих файлів. Ця поведінка може дизайнер сгенерирована код з будучи вперемішку з вашого коду.

    Для отримання додаткової інформації про нових удосконалень мовою Visual Basic 2005 відвідайте нижче веб-сайт Microsoft розробників (MSDN):
    ASPX http://MSDN.Microsoft.com/EN-US/Library/ms379584 (VS.80)
    Додатково про часткові класи та форми Windows Дизайнер, відвідайте вузла MSDN:
    http://msdn2.Microsoft.com/EN-US/Library/ms171843.aspx
  6. Натисніть клавішу F5, щоб побудувати і запустити на зразок.

Посилання

Для більш інформацію, клацніть номер статті в регіоні Microsoft Knowledge Base:
302309Як читати текстовий файл за допомогою System.IO в Visual Basic 2005 або в Visual Basic .net
Для отримання більш загальних відомостей про Visual Basic .Net, перегляньте наступні групи новин Usenet:
Visual Basic

Властивості

Номер статті: 306666 - Востаннє переглянуто: 24 липня 2012 р. - Редакція: 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 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 306666

Надіслати відгук

 

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