Bagaimana untuk secara rekursif direktori pencarian dengan menggunakan Visual Basic 2005 atau Visual Basic .net

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 306666 - Melihat produk di mana artikel ini berlaku.
Untuk Microsoft Visual C++ 2005 dan Microsoft Visual C++ .net versi dari artikel ini, lihat 307009.
Microsoft Visual C# 2005 dan Microsoft Visual C# .net versi dari artikel ini, lihat 303974.
Perbesar semua | Perkecil semua

Pada Halaman ini

Ringkasan

Artikel ini menunjukkan melalui kode bagaimana secara rekursif Cari subdirektori untuk file, dimulai dengan direktori akar. Pencarian string ditetapkan sehingga Anda dapat Telisik file yang cocok tertentu kriteria. Setiap bagian dari kode dijelaskan sebagai diperlukan. Kode kerja contoh juga diberikan di akhir artikel.

Direktori Rekursi adalah tugas IO umum untuk pengembang. FileSystemObject memudahkan tugas ini untuk Component Object Model (COM) aplikasi. Sekarang tugas ini telah menjadi lebih mudah di Microsoft .net Kerangka. Serupa dengan FileSystemObject, kelas-kelas di System.IO namespace menyediakan cara yang berorientasi-objek untuk akses file dan direktori.

Persyaratan

The Daftar berikut menguraikan fitur peranti penangkap keras, peranti penangkap lunak, jaringan infrastruktur, dan Service Pack yang Anda butuhkan:
  • Microsoft Visual Studio 2005 atau Microsoft Visual Studio .NET
Microsoft menyediakan pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat. Ini termasuk, namun tidak terbatas pada, tersirat jaminan dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel ini mengasumsikan bahwa Anda sudah familiar dengan bahasa pemrogram yang sedang menunjukkan dan dengan alat-alat yang digunakan untuk membuat dan untuk men-debug prosedur. Teknisi Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka tidak akan mengubah contoh tersebut untuk menyediakan ditambahkan fungsi atau membangun prosedur untuk memenuhi kebutuhan spesifik Anda.

Direktori rekursi

File dan direktori manipulasi kelas tinggal di System.IO namespace. Sebelum Anda bekerja dengan kelas-kelas ini, Anda harus mengimpor namespace berikut ke dalam proyek Anda.
using System.IO;
				
System.IO namespace kelas menyediakan banyak pilihan untuk bekerja dengan file dan direktori. System.IO namespace tidak hanya memberikan kelas yang Anda dapat instantiate, itu juga menyediakan file dan direktori utilitas kelas. Kelas-kelas ini berisi bersama metode yang dapat Anda hubungi tanpa menyatakan variabel tipe. Sebagai contoh, Anda dapat menggunakan objek direktori untuk mendapatkan subdirektori di tertentu direktori.

Kode berikut menggunakan metode GetDirectories bersama objek direktori untuk gulung balik sebuah array dari string. Array ini berisi nama path direktori ke subdirektori c: \ direktori, jika ada.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Objek direktori juga berisi metode GetFiles . Metode GetFiles memungkinkan Anda mengambil array string berkas yang sesuai kriteria tertentu. Contoh kode berikut menggunakan File objek untuk mengambil semua file dalam direktori c: \ yang berakhir dengan ekstensi .dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
Metode GetDirectories dan metode GetFiles objek direktori adalah semua yang Anda butuhkan untuk secara rekursif Telisik file yang cocok dengan string pencarian. Metode berikut ini digunakan untuk melakukan rekursi.
    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
				
Kode sebelumnya melewati string, yang berisi direktori yang Anda ingin Telisik, untuk DirSearch. Nilai string ini adalah nama path lengkap dari direktori. Anda dapat menggunakan metode GetDirectories untuk mengambil subdirektori direktori yang dilewatkan ke dalam prosedur Anda. Karena metode GetDirectories gulung balik array, Anda dapat menggunakan untuk/setiap pernyataan iterate atas setiap subdirektori. Untuk setiap subdirektori, menggunakan metode GetFiles untuk atas file dalam direktori tersebut. Nilai kotak teks pada formulir Anda dilewatkan ke metode GetFiles . Kotak teks berisi string pencarian yang menyaring hasil yang metode GetFiles kembali. Jika file sesuai kriteria kueri, mereka adalah ditambahkan ke kotak daftar. Untuk setiap subdirektori yang terletak, menelepon DirSearch lagi, dan menyebarkannya subdirektori. Dengan menggunakan panggilan rekursif ini, Anda dapat Telisik semua subdirektori di direktori akar tertentu.

Contoh lengkap kode

  1. Mulai baru Microsoft Visual Basic 2005 atau Microsoft Visual Dasar aplikasi Windows .net proyek. secara asali, suatu bentuk yang bernama Form1 dibuat.
  2. Dalam menu Lihat , klik untuk menampilkan solusi Explorer.
  3. Dalam solusi Explorer, klik kanan-atas Form1, dan kemudian klik Lihat kode.
  4. Dalam jendela kode Form1, sorot dan kemudian menghapus semua kode yang ada.
  5. Paste kode berikut dalam jendela kode Form1 bentuk.
    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
    					
    Catatan Anda harus mengubah kode pada Visual Basic 2005. secara asali, Visual Dasar menciptakan dua file untuk proyek ketika Anda membuat Windows Forms proyek. Jika bentuk bernama Form1, dua file yang mewakili bentuk yang bernama Form1.vb dan Form1.Designer.vb. Anda menulis kode pada berkas Form1.vb. Windows Forms Designer menulis kode pada berkas Form1.Designer.vb. The Windows Forms Designer menggunakan kata bukti kunci parsial untuk membagi pelaksanaan Form1 menjadi dua file terpisah. Perilaku ini mencegah dihasilkan desainer kode dari yang diselingi dengan kode Anda.

    Untuk informasi lebih lanjut tentang baru Visual Basic 2005 bahasa tambahan, kunjungi berikut situs web Microsoft Developer Network (MSDN):
    .aspx http://MSDN.Microsoft.com/en-us/library/ms379584 (VS.80)
    Untuk informasi lebih lanjut tentang kelas parsial dan Windows Forms Perancang, kunjungi Website MSDN berikut:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  6. Tekan F5 untuk membangun dan menjalankan sampel.

Referensi

Untuk lebih informasi, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
302309Bagaimana membaca file teks dengan menggunakan System.IO Visual Basic 2005 atau dalam Visual Basic .net
Untuk lebih banyak informasi umum tentang Visual Basic .Net, lihat newsgroup Usenet berikut:
Visual Basic

Properti

ID Artikel: 306666 - Kajian Terakhir: 24 Juli 2012 - Revisi: 3.0
Berlaku bagi:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 306666

Berikan Masukan

 

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