Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Ваш браузер не підтримується

Необхідно оновити браузер щоб користуватися цим сайтом.

Оновіть Internet Explorer до найновішої версії

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

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

Клацніть тут, щоб переглянути цю статтю англійською мовою: 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.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					
    Примітка Слід змінити код 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): Додатково про часткові класи та форми Windows Дизайнер, відвідайте вузла MSDN:
  6. Натисніть клавішу F5, щоб побудувати і запустити на зразок.
Посилання
Для більш інформацію, клацніть номер статті в регіоні Microsoft Knowledge Base:
302309Як читати текстовий файл за допомогою System.IO в Visual Basic 2005 або в Visual Basic .net
Для отримання більш загальних відомостей про Visual Basic .Net, перегляньте наступні групи новин Usenet:

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 306666 – останній перегляд: 07/24/2012 06:27:00 – виправлення: 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
Зворотний зв’язок
"76500"; var Ctrl = ""; document.write(" protocol) + "//c.microsoft.com/ms.js'><\/script>");