Visual C# kullanarak yinelemeli arama dizinleri nasıl

Makale çevirileri Makale çevirileri
Makale numarası: 303974 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual C++ .NET sürümü için bkz: 307009.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 306666.

Bu makalede gösterir aşağıdaki Microsoft .NET Framework sınıf kitaplığı ad:
  • System.IO
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede gösterir nasıl bir C# Windows Forms uygulamasında dosyaları için yinelemeli arama alt dizinler. A Böylece dosyaları arayabilirsiniz arama dizesi belirtilen eşleşen bir joker karakter belirli ölçütleri. Her kod parçası, gerektiğinde açıklanmıştır. Bir çalışma kod örneği, makalenin sonunda de sağlanır.

Dizin özyineleme, geliştiriciler için ortak bir g/ç görevdir. FileSystemObject bu görevi Bileşen Nesne Modeli (COM) kolaylaştırır uygulamalar. Şimdi bu görevin .NET ile daha kolay hale geldi. FileSystemObjectbenzer sınıfları System.IO ad dosyalara erişmek için nesne yönelimli bir yol sağlar ve dizinler.

Gereksinimleri

  • Microsoft Visual C# 2005 veya Microsoft Visual C# .NET

Dizin yineleme

Dosya ve dizin düzenleme sınıfları System.IO ad alanında bulunur. Bu sınıflar ile çalışma önce almanız Projenize aşağıdaki ad alanı:
using System.IO;
System.IO ad alanı sınıfları dosyalarla çalışma sağlayan birçok sınıfları sağlar ve dizinler. Bu sınıflar, dosya sınıfları, directory sınıfları ve yardımcı program sınıfları içerir. Bu sınıfların çoğu statik içerir Bu türde bir değişken bildirmek zorunda kalmadan arama yöntemleri. Örneğin, alt dizinlerinin elde etmek için Dizin nesnesini kullanabilirsiniz bir verilen Dizin.

Aşağıdaki kod statik GetDirectories yöntemini Dizin nesnesinin dizelerden oluşan bir dizi döndürmek için kullanır. Bu dizi içerir Dizin yol adları varsa C dizinin alt dizinleri için.
string[] directories = Directory.GetDirectories("C:\\");
Dizin nesnesi de uyan dosyaları bir dize dizisi almak sağlar GetFiles adl? bir yöntem içerir bir Belirli ölçüt. Aşağıdaki kod örneği sona C dizinindeki tüm dosyaları almak için Dosya nesnesi kullanır. .dll uzantısı ile:
string[] files = Directory.GetFiles("C:\\", "*.dll");
Yinelemeli arama dosyaları için gereken tüm Dizin nesnesinin GetDirectories ve GetFiles yöntem olan, Arama dizesiyle eşleşen. Aşağıdaki yöntem, özyineleme gerçekleştirmek için kullanılır:
void DirSearch(string sDir) 
{
	try	
	{
	   foreach (string d in Directory.GetDirectories(sDir)) 
	   {
		foreach (string f in Directory.GetFiles(d, txtFile.Text)) 
		{
		   lstFilesFound.Items.Add(f);
		}
		DirSearch(d);
	   }
	}
	catch (System.Exception excpt) 
	{
		Console.WriteLine(excpt.Message);
	}
}
Yukarıdaki kod dizini içeren bir dize geçirir, DirSearchiçin aramak istediğiniz. Bu dize değeri dizininin tam yoludur. , GetDirectories geçirilen dizininin alt dizinleri almak için kullanabilirsiniz yordamınız. GetDirectories bir dizi verdiğinden, kullanabileceğiniz bir için/her yineleme deyimi Her alt. Her alt dizinde GetFiles yöntem bu dizindeki dosyalar üzerinde yinelemek için kullanın. Değeri Formunuzda metin kutusu için GetFilesgeçirilir. Metin kutusu Filtre sonuçları arama dizesi içeriyor GetFiles döndürmesidir. Herhangi bir dosya arama kriterleriyle eşleşmesi varsa, bunlar eklenir liste kutusu için. Bulunan her alt dizin DirSearch tekrar çağırın ve bir alt dizine geçirin. Bu özyinelemeli aramayı kullanarak verilen kök dizininin tüm alt dizinlerindeki arayabilirsiniz.

Tam kod örneği

  1. Yeni bir Visual C# Windows application projesi başlatın. Varsayılan olarak, Form1 adl? bir formdur oluşturdu.
  2. Solution Explorer görüntülemek için Görünüm menüsünde tıklatın.
  3. Çözüm Gezgini'nde, Form1'isağ tıklatın ve Kod görüntüle'yitıklatın.
  4. Form1 kod penceresinde vurgulayın ve sonra Tümünü Sil Varolan kodu.
  5. Form1 kod penceresine aşağıdaki kodu yapıştırın.
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.IO;
    
    namespace RecursiveSearchCS
    {
        /// <summary>
        /// Summary description for Form1
        /// </summary>
        public class Form1 : System.Windows.Forms.Form
        {
            internal System.Windows.Forms.Button btnSearch;
            internal System.Windows.Forms.TextBox txtFile;
            internal System.Windows.Forms.Label lblFile;
            internal System.Windows.Forms.Label lblDirectory;
            internal System.Windows.Forms.ListBox lstFilesFound;
            internal System.Windows.Forms.ComboBox cboDirectory;
            /// <summary>
            /// Required designer variable
            /// </summary>
            private System.ComponentModel.Container components = null;
    
            public Form1()
            {
                // 
                // Required for Windows Form Designer support
                // 
                InitializeComponent();
    
                // 
                // TODO: Add any constructor code after InitializeComponent call.
                // 
            }
    
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose( bool disposing )
            {
                if( disposing )
                {
                    if (components != null) 
                    {
                        components.Dispose();
                    }
                }
                base.Dispose( disposing );
            }
    
            #region Windows Form Designer generated code
            /// <summary>
            /// Required method for Designer support: do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.btnSearch = new System.Windows.Forms.Button();
                this.txtFile = new System.Windows.Forms.TextBox();
                this.lblFile = new System.Windows.Forms.Label();
                this.lblDirectory = new System.Windows.Forms.Label();
                this.lstFilesFound = new System.Windows.Forms.ListBox();
                this.cboDirectory = new System.Windows.Forms.ComboBox();
                this.SuspendLayout();
                // 
                // btnSearch
                // 
                this.btnSearch.Location = new System.Drawing.Point(608, 248);
                this.btnSearch.Name = "btnSearch";
                this.btnSearch.TabIndex = 0;
                this.btnSearch.Text = "Search";
                this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
                // 
                // txtFile
                // 
                this.txtFile.Location = new System.Drawing.Point(8, 40);
                this.txtFile.Name = "txtFile";
                this.txtFile.Size = new System.Drawing.Size(120, 20);
                this.txtFile.TabIndex = 4;
                this.txtFile.Text = "*.dll";
                // 
                // lblFile
                // 
                this.lblFile.Location = new System.Drawing.Point(8, 16);
                this.lblFile.Name = "lblFile";
                this.lblFile.Size = new System.Drawing.Size(144, 16);
                this.lblFile.TabIndex = 5;
                this.lblFile.Text = "Search for files containing:";
                // 
                // lblDirectory
                // 
                this.lblDirectory.Location = new System.Drawing.Point(8, 96);
                this.lblDirectory.Name = "lblDirectory";
                this.lblDirectory.Size = new System.Drawing.Size(120, 23);
                this.lblDirectory.TabIndex = 3;
                this.lblDirectory.Text = "Look In:";
                // 
                // lstFilesFound
                // 
                this.lstFilesFound.Location = new System.Drawing.Point(152, 8);
                this.lstFilesFound.Name = "lstFilesFound";
                this.lstFilesFound.Size = new System.Drawing.Size(528, 225);
                this.lstFilesFound.TabIndex = 1;
                // 
                // cboDirectory
                // 
                this.cboDirectory.DropDownWidth = 112;
                this.cboDirectory.Location = new System.Drawing.Point(8, 128);
                this.cboDirectory.Name = "cboDirectory";
                this.cboDirectory.Size = new System.Drawing.Size(120, 21);
                this.cboDirectory.TabIndex = 2;
                this.cboDirectory.Text = "ComboBox1";
                // 
                // Form1
                // 
                this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                this.ClientSize = new System.Drawing.Size(688, 277);
                this.Controls.AddRange(new System.Windows.Forms.Control[] {
    
                this.btnSearch,
                this.txtFile,
                this.lblFile,
                this.lblDirectory,
                this.lstFilesFound,
                this.cboDirectory});
    
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                this.ResumeLayout(false);
    
            }
            #endregion
    
            /// <summary>
            /// The main entry point for the application
            /// </summary>
            [STAThread]
            static void Main() 
            {
                Application.Run(new Form1());
            }
    
            private void btnSearch_Click(object sender, System.EventArgs e)
            {
                lstFilesFound.Items.Clear();
                txtFile.Enabled = false;
                cboDirectory.Enabled = false;
                btnSearch.Text = "Searching...";
                this.Cursor = Cursors.WaitCursor;
                Application.DoEvents();
                DirSearch(cboDirectory.Text);
                btnSearch.Text = "Search";
                this.Cursor = Cursors.Default;
                txtFile.Enabled = true;
                cboDirectory.Enabled = true;
            }
    
            private void Form1_Load(object sender, System.EventArgs e)
            {
                cboDirectory.Items.Clear();
                foreach (string s in Directory.GetLogicalDrives())
                {
                    cboDirectory.Items.Add(s);
                }
                cboDirectory.Text = "C:\\";
            }
    
            void DirSearch(string sDir) 
            {
                try	
                {
                    foreach (string d in Directory.GetDirectories(sDir)) 
                    {
                        foreach (string f in Directory.GetFiles(d, txtFile.Text)) 
                        {
                            lstFilesFound.Items.Add(f);
                        }
                        DirSearch(d);
                    }
                }
                catch (System.Exception excpt) 
                {
                    Console.WriteLine(excpt.Message);
                }
            }
        }
    }
    Not Visual Studio 2005 ve Visual Studio 2008'de kodu değiştirmeniz gerekir. Bir Windows Forms projesi oluşturduğunuzda, Visual Studio 2005 ' önceki sürümlerinde Visual Studio, Visual C# bir form projeye ekler. Form1 formu olarak adlandırılır. Visual C# 2005 ve sonraki sürümleri, formu temsil eden iki dosyayı Form1.cs ve Form1.designer.cs olarak adlandırılır. Form1.cs dosyas?na bir kod yazın. Windows Form Tasarımcısı Form1.designer.cs dosyas?ndaki kod yazar.

    Visual C# 2005 veya Visual C# 2008 örnek koda dönüştürmek için yeni bir Visual C# Windows uygulaması oluşturun ve sonra aşağıdaki adımları izleyin:
    1. Form1.Designer.cs dosyas?ndaki parçalı sınıf Form1 düğmesini nesne, metin kutusu nesnesi ve diğer Windows nesneleri kopyalayın.
    2. InitializeComponent yöntemi bölümün içeriğini Form1.Designer.cs dosyas?ndaki InitializeComponent yöntemine yukarıdaki kodu ekleyin. InitializeComponent yöntemi geçerli içeriğini sonra içeriğini yapıştırır.
    3. Form1.cs dosyas?n? Form1 sınıfının içine yukarıdaki kodu aşağıdaki yöntemlerden kopyalayın:
      • btnSearch_Click
      • Form1_Load
      • DirSearch
    4. Form1.cs dosyas?n? deyimini kullanarak System.IO; kullanarak ekleyin.
    Windows Form Tasarımcısı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx
  6. Yapı ve örneği çalıştırmak için F5 tuşuna basın Program.

Referanslar

Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306777Bir metin dosyası System.IO ve Visual C# kullanarak nasıl okunur

Özellikler

Makale numarası: 303974 - Last Review: 30 Mayıs 2013 Perşembe - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Anahtar Kelimeler: 
kbhowtomaster kbio kbmt KB303974 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 303974

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