Visual Basic 2005 veya Visual Basic .net kullanarak yinelemeli arama dizinleri hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 306666 - Bu makalenin geçerli olduğu ürünleri görün.
Bir Microsoft Visual c++ 2005 ve Microsoft Visual Bu makalede c++ .net sürümü için bkz: 307009.
Bir Microsoft Visual C# 2005 ve Microsoft Visual Bu makalede C# .net sürümü için bkz: 303974.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, kod boyunca gösterilmektedir yinelemeli olarak nasıl yapılır? alt dizinleri bir kök dizin ile başlayan dosyalar için arama yapın. Bir ara dize belirtilirse arama yapabilmesi için belirli bir eşleşen dosyaları ölçütleri. Her bir kod parçası olarak gereken açıklanmıtır. Çalışma kodu örnek, makalenin sonunda de sağlanır.

Dizin özyineleme, geliştiriciler için ortak bir g/Ç görevdir. Bu görevi FileSystemObject Bileşen Nesne Modeli (com) kolaylaştırır uygulamaları. Şimdi bu görevi Microsoft .net daha da kolay hale geldi Çerçeve. Benzer şekilde FileSystemObjectsınıfları System.IO ad alanındaki dosyalara erişmek için nesne yönelimli bir yol sağlamak ve dizinleri.

Gereksinimleri

, Aşağıdaki listede önerilen donanım, yazılım, ağ Altyapı ve gereksinim duyduğunuz hizmet paketleri:
  • Microsoft Visual Studio 2005 veya Microsoft Visual Studio .NET
Microsoft programlama örneklerini yalnızca garanti olmadan ya da sağlar örtülü veya. Bu içerir ancak örtülü için sınırlı değildir satılabilirlik veya belirli bir amaca uygunluk garantileri. Bu makalede yüklenmekte olan programlama dili hakkında bilgi sahibi olduğunuz varsayılmaktadır demonstrated ve oluşturmak ve hata ayıklamak için kullanılan araçlar yordamlar. Microsoft destek mühendisleri işlevselliğinin açıklanmasına yardımcı olabilir bir Belirli yordam ancak değiştirme bu örnekler sağlamak için eklenen Özel gereksinimlerinizi karşılamak üzere işlevselliği veya yap?s?n? yordamlar.

Dizin yineleme

Dosya ve dizin düzenlemesi sınıfları System.IO ad alanında bulunur. Bu sınıflar ile çalışma önce almanız Aşağıdaki ad alanına projeniz.
using System.IO;
				
System.IO ad alanı sınıfları dosyalarla çalışmak için birçok seçenek sunar ve dizinleri. Örneğini oluşturabilir sınıfları System.IO ad yalnızca sağlar, Ayrıca, dosya ve dizin yardımcı program sınıfları sağlar. Bu sınıflar içeren paylaşılan Bu türde bir değişken bildirmek zorunda kalmadan çağrı yöntemleri. Örneğin, alt dizinlerinin elde etmek için Dizin nesnesini kullanabilirsiniz bir verilen Dizin.

Aşağıdaki kod, bir dize dizisini geri dönmek için paylaşılan Dizin nesnesinin GetDirectories yöntemini kullanır. Bu dizi içerir Dizin yolu adları varsa c:\ dizinin alt dizinleri için.
Dim directories() As String = Directory.GetDirectories("C:\")
				
Dizin nesnesi GetFiles yöntemi de içerir. Eşleşen dosyaları dize dizisi almak GetFiles yöntemi sağlar bir Belirli ölçüt. Aşağıdaki kod örneği c:\ dizininde sona dosyaların tümünü almak için Dosya nesnesi kullanır. .dll uzantısına.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
GetDirectories yöntemi ile bir Dizin nesnesi GetFiles yöntem yinelemeli arama dosyaları için gereken tüm değildir, Arama dizesiyle eşleşen. Aşağıdaki yöntem, özyineleme gerçekleştirmek için kullanılır.
    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
				
Yukarıdaki kod dizini içeren bir dize iletir, DirSearchiçin arama yapmak istediğiniz. Bu dize değeri dizinin tam yol adı değil. Siz GetDirectories yöntemi, dizinin alt dizinleri almak için kullanabilirsiniz yordamınız geçirildi. GetDirectories yöntemi bir dizi verdiğinden, kullanabileceğiniz bir için/her ifadesine Her alt yineleme. Her alt dizinde GetFiles yöntemi dizindeki dosyaların içinde yineleme yapmak için kullanın. Değeri Formunuzda metin kutusunu GetFiles yönteme geçirildi. Metin kutusu filtre arama dizesi içeriyor GetFiles döndürece?ini sonuçları. Herhangi bir dosya arama ölçütleri eşleşirse, bulundukları liste kutusuna eklenir. Bulunan her alt DirSearch tekrar arayın ve bir alt dizine geçmesi. Bu özyinelemeli aramayı kullanarak verilen kök dizinin tüm alt dizinlerde arama yapabilirsiniz.

Tam kod örneği

  1. Yeni bir Microsoft Visual Basic 2005 veya Microsoft Visual Başlat Temel .net Windows Application projesi. Varsayılan olarak, Form1 adl? bir form oluşturulur.
  2. Görünüm menüsünden Solution Explorer'ı görüntülemek için tıklatın.
  3. Solution Explorer'da Form1'isağ tıklatın ve Kod Görüntüle'yitıklatın.
  4. Form1 kod penceresinde vurgulayın ve Tümünü Sil Varolan kodu.
  5. 2 Form1'in code penceresinde aşağıdaki kodu yapıştırın formu.
    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
    					
    Not Visual Basic 2005 kodu değiştirmeniz gerekir. Varsayılan olarak, Visual Windows Forms oluşturduğunuzda, basic projesi için iki dosya oluşturur. Proje. Form Form1 adl? formu temsil eden iki dosya demektir Adlandırılmış Form1.vb ve Form1.Designer.vb. Form1.vb dosyasında kod yazmak. Windows Forms Designer Form1.Designer.vb dosyasındaki kod yazar. , Windows Forms tasar?mc?s? partial anahtar uygulanışı bölmek için kullanır. İki ayrı dosya içine Form1. Bu davranış, tasarımcı tarafından oluşturulan engeller. kodunuzu interspersed kodun.

    Daha fazla bilgi için Yeni Visual Basic 2005 dil geliştirmeleri hakkında aşağıdaki ziyaret edin Microsoft Developer Network (msdn) Web sitesi:
    http://msdn.microsoft.com/en-us/library/ms379584 (vs.80) .aspx
    Parçalı sınıflar ve Windows Forms ile ilgili daha fazla bilgi için Tasarımcısı, aşağıdaki msdn Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  6. Olu?turup örneği çalıştırmak için F5 tuşuna basın.

Referanslar

Daha fazla bilgi için bilgi, makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın Microsoft Knowledge Base:
302309Bir metin dosyası System.IO Visual Basic 2005 veya Visual Basic .net kullanarak nasıl okunur
Visual Basic hakkında daha fazla genel bilgi için .net, aşağıdaki Usenet haber grubuna bakın:
Visual Basic

Özellikler

Makale numarası: 306666 - Last Review: 24 Temmuz 2012 Salı - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 306666

Geri Bildirim Ver

 

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