Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để đệ quy mục tin thư thoại tra cứu bằng cách sử dụng Visual Basic 2005 hoặc Visual Basic .net

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 306666
Microsoft Visual C++ 2005 và Microsoft Visual Phiên bản C++ .net của bài viết này, xem 307009.
Microsoft Visual C# 2005 và Microsoft Visual C# .net Phiên bản của bài viết này, xem 303974.
Tóm tắt
Bài viết này thể hiện qua mã làm thế nào để đệ quy mục tin thư thoại tra cứu con cho các tập tin, Bắt đầu với một mục tin thư thoại gốc. Một tra cứu chuỗi được quy định như vậy mà bạn có thể tra cứu cho các tập tin phù hợp với một số tiêu chuẩn. Mỗi một phần của mã giải thích khi cần thiết. Một mã làm việc mẫu này cũng cung cấp vào cuối của bài báo.

mục tin thư thoại đệ quy là một nhiệm vụ IO phổ biến cho các nhà phát triển. Làm FileSystemObject cho nhiệm vụ này dễ dàng cho mô hình đối tượng thành phần (COM) các ứng dụng. Bây giờ công việc này đã trở nên dễ dàng hơn trong Microsoft .net Khuôn khổ. Tương tự như FileSystemObject, các lớp học trong không gian tên System.IO cung cấp một hướng đối tượng cách để truy cập tập tin và mục tin thư thoại.

Yêu cầu

Các danh sách sau đây phác thảo được đề nghị phần cứng, phần mềm, mạng cơ sở hạ tầng, và gói bản ghi dịch vụ mà bạn cần:
  • Microsoft Visual Studio 2005 hoặc Microsoft Visual Studio .NET
Microsoft cung cấp lập trình ví dụ để minh hoạ chỉ, không có bảo hành hoặc thể hiện hay ngụ ý. Điều này bao gồm, nhưng không giới hạn, các ngụ ý bảo hành về khả năng bán hàng hoặc cho một mục đích cụ thể. Bài viết này giả định rằng bạn đã quen thuộc với ngôn ngữ lập trình đang chứng tỏ và với những công cụ được sử dụng để tạo ra và để gỡ lỗi thủ tục. Microsoft hỗ trợ các kỹ sư có thể giúp giải thích các chức năng của một thủ tục cụ thể, nhưng họ sẽ không thay đổi những ví dụ để cung cấp thêm chức năng hoặc xây dựng quy trình để đáp ứng yêu cầu cụ thể của bạn.

mục tin thư thoại đệ quy

Các lớp học thao tác tập tin và mục tin thư thoại nằm trong không gian tên System.IO . Trước khi bạn làm việc với các lớp học, bạn nên nhập khẩu không gian tên sau đây vào dự án của bạn.
using System.IO;				
Các lớp học không gian tên System.IO cung cấp nhiều tùy chọn để làm việc với tệp và mục tin thư thoại. Không gian tên System.IO không chỉ cung cấp các lớp học mà bạn có thể nhanh chóng, nó cũng cung cấp các lớp học hữu ích tập tin và mục tin thư thoại. Các lớp học có được chia sẻ phương pháp mà bạn có thể gọi mà không cần phải khai báo một biến loại. Ví dụ, bạn có thể sử dụng các đối tượng mục tin thư thoại để có được các mục tin thư thoại con của một nhất định mục tin thư thoại.

Mã sau đây sử dụng phương pháp GetDirectories được chia sẻ của đối tượng mục tin thư thoại để trả lại một mảng của chuỗi. Mảng này chứa mục tin thư thoại con đường tên cho mục tin thư thoại con trong mục tin thư thoại c: \, nếu có.
Dim directories() As String = Directory.GetDirectories("C:\")				
Các đối tượng mục tin thư thoại cũng chứa các phương pháp GetFiles . Phương pháp GetFiles cho phép bạn lấy một chuỗi mảng của tập tin phù hợp với một tiêu chí nhất định. Mẫu mã sau đây sử dụng các đối tượng tập tin để lấy tất cả các tập tin trong mục tin thư thoại c: \ kết thúc với một phần mở rộng thư viện .dll rẽ.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")				
Các phương pháp GetDirectories và các phương pháp GetFiles của đối tượng mục tin thư thoại là tất cả những gì bạn cần để đệ quy tra cứu cho các tập tin mà phù hợp với chuỗi tra cứu. Các phương pháp sau đây được sử dụng để thực hiện đệ quy.
    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				
Mã trước đi một chuỗi, có chứa các mục tin thư thoại đó bạn muốn tra cứu, để DirSearch. Giá trị chuỗi này là tên đầy đủ đường dẫn của mục tin thư thoại. Bạn có thể sử dụng các phương pháp GetDirectories để lấy các mục tin thư thoại con trong mục tin thư thoại đó là thông qua thành thủ tục của bạn. Bởi vì phương pháp GetDirectories trả lại một mảng, bạn có thể sử dụng một cho/mỗi tuyên bố iterate qua mỗi mục tin thư thoại con. Đối với mỗi mục tin thư thoại con, sử dụng các phương pháp GetFiles để iterate qua các tập tin trong mục tin thư thoại đó. Giá trị của hộp văn bản vào hình thức của bạn là thông qua với phương pháp GetFiles . Hộp văn bản chứa chuỗi tra cứu các bộ lọc các kết quả trả về các phương pháp GetFiles . Nếu bất kỳ tệp nào khớp với tiêu chí tra cứu, họ là thêm vào hộp danh sách của bạn. Đối với mỗi mục tin thư thoại con đó là vị trí, gọi DirSearch một lần nữa, và vượt qua nó một mục tin thư thoại con. Bằng cách sử dụng này gọi đệ quy, bạn có thể tra cứu tất cả các mục tin thư thoại con của một mục tin thư thoại cho trước gốc.

Mã hoàn chỉnh mẫu

  1. Bắt đầu một Microsoft Visual Basic 2005 mới hoặc Microsoft Visual Cơ bản ứng dụng Windows .net dự án. theo mặc định, một hình thức được đặt tên theo Form1 được tạo ra.
  2. Trên menu xem , nhấp vào để hiển thị giải pháp Explorer.
  3. Trong giải pháp Explorer, bấm chuột phải vào Form1, và sau đó bấm Xem mã.
  4. Trong cửa sổ mã Form1, làm nổi bật và sau đó xóa tất cả các mã hiện.
  5. Dán đoạn mã sau trong cửa sổ mã của Form1 hình thức.
    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					
    Lưu ý Bạn phải thay đổi mã trong Visual Basic 2005. theo mặc định, trực quan Cơ bản tạo ra hai tập tin cho dự án khi bạn tạo một hình thức Windows dự án. Nếu mẫu này được đặt tên là Form1, hai tập tin mà đại diện cho các hình thức đang đặt tên là Form1.vb và Form1.Designer.vb. Bạn viết mã trong tập tin Form1.vb. Các nhà thiết kế hình thức Windows viết mã trong tập tin Form1.Designer.vb. Các Cửa sổ hình thức thiết kế sử dụng các từ khóa một phần phân chia thực hiện Form1 thành hai tập tin riêng biệt. Hành vi này ngăn cản các nhà thiết kế tạo ra Mã từ đang được xen kẽ với mã của bạn.

    Để biết thêm thông tin về cải tiến Visual Basic 2005 ngôn ngữ mới, truy cập vào sau đây web site mạng nhà phát triển của Microsoft (MSDN): Cho biết thêm thông tin về các lớp học phần và các hình thức Windows Nhà thiết kế, truy cập vào MSDN Web site sau:
  6. Nhấn F5 để xây dựng bật lên và chạy các mẫu.
Tham khảo
Để biết thêm thông tin, bấm số bài viết sau đây để xem các bài viết trong các Cơ sở kiến thức Microsoft:
302309Làm thế nào để đọc một tập tin văn bản bằng cách sử dụng System.IO Visual Basic 2005 hoặc trong Visual Basic .net
Thông tin tổng quát hơn về Visual Basic .Net, xem nhóm tin Usenet sau đây:

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 306666 - Xem lại Lần cuối: 07/24/2012 06:28:00 - Bản sửa đổi: 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 KbMtvi
Phản hồi