Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Visual C# kullanarak yinelemeli arama dizinleri nasıl

Ö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
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
Ö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);            }        }    }}
    NotVisual 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:
  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

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 303974 - Son İnceleme: 05/30/2013 09:16:00 - Düzeltme: 4.0

Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# 2008 Express Edition

  • kbhowtomaster kbio kbmt KB303974 KbMttr
Geri bildirim