أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية الدلائل البحث بشكل متكرر باستخدام Visual C#

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

303974
للحصول على إصدار Microsoft Visual c + +.NET من هذه المقالة، راجع 307009.
للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع 306666.

تشير هذه المقالة إلى مساحة الاسم "مكتبة الفئات الخاصة ب" Microsoft.NET Framework التالية:
  • System.IO
الموجز
يوضح هذا المقال خطوة بخطوة كيفية الدلائل البحث بشكل متكرر للملفات في تطبيق C# Windows Forms. A يتم تحديد سلسلة البحث بحيث يمكنك البحث عن الملفات التي تطابق معايير بدل معينة. يتم توضيح كل جزء من التعليمات البرمجية عند الضرورة. صالح للعمل يتم أيضا توفير نموذج التعليمات البرمجية في نهاية المقال.

الدليل العودية مهمة IO شائعة للمطورين. FileSystemObject تسهيل هذه المهمة لطراز كائن المكون (COM) التطبيقات. الآن أصبح أسهل في.NET هذه المهمة. الفئات في مساحة الاسم System.IO مشابه ل FileSystemObject، توفر طريقة كائنية للوصول إلى الملفات و الدلائل.

متطلبات

  • Microsoft Visual C# 2005 أو Microsoft Visual C#.NET

العودية الدليل

فئات معالجة الدلائل والملفات الموجودة في مساحة الاسم System.IO . قبل العمل مع هذه الفئات، يجب استيراد مساحة الاسم التالية إلى المشروع الخاص بك:
using System.IO;
فئات مساحة الاسم System.IO توفر العديد من الفئات التي تمكنك من العمل مع الملفات و الدلائل. تتضمن هذه الفئات الفئات الملف والدليل فئات فئات المساعدة. تحتوي العديد من هذه الفئات ثابت الأساليب التي يمكنك استدعاؤها دون الحاجة إلى تعريف متغير من هذا النوع. على سبيل المثال، يمكنك استخدام كائن الدليل للحصول على الدلائل الفرعية الخاصة محدد دليل.

تستخدم التعليمة البرمجية التالية أسلوب GetDirectories ثابتة من كائن الدليل لإرجاع صفيف سلاسل. يتضمن هذا الصفيف أسماء مسار الدليل إلى الدلائل الفرعية للدليل C، أن وجد.
string[] directories = Directory.GetDirectories("C:\\");
كائن الدليل يحتوي أيضا على أسلوب يسمى GetFiles تسمح لك استرداد صفيف سلسلة من الملفات التي تطابق معايير معينة. يستخدم نموذج التعليمات البرمجية التالية كائن الملف لاسترداد كافة الملفات في الدليل C التي تنتهي مع ملحق.dll:
string[] files = Directory.GetFiles("C:\\", "*.dll");
هي أساليب GetDirectories و GetFiles كائن الدليل كل ما تحتاج إلى البحث بشكل متكرر عن الملفات التي تطابق سلسلة البحث. يتم استخدام الأسلوب التالي لتنفيذ العودية:
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);	}}
التعليمات البرمجية السابقة بتمرير سلسلة، والذي يحتوي على الدليل الذي تحتاج للبحث إلى DirSearch. هذه القيمة سلسلة هو المسار الكامل للدليل. يمكنك يمكنك استخدام GetDirectories لاسترداد الدلائل الفرعية للدليل الذي تم تمريره إلى الإجراء الخاص بك. بسبب GetDirectories إرجاع صفيف، يمكنك استخدام ل/كل عبارة للتكرار عبر كل دليل فرعي. لكل دليل فرعي، استخدم أسلوب GetFiles للمرور عبر الملفات الموجودة في هذا الدليل. قيمة يتم تمرير مربع النص على النموذج الخاص بك إلى GetFiles. مربع النص يحتوي على سلسلة البحث الذي يقوم بتصفية النتائج أن ترجع GetFiles . إذا كانت أية ملفات تطابق معايير البحث، إضافتها لمربع القائمة. لكل دليل فرعي موجود، استدعاء DirSearch مرة أخرى، وتمرير دليل فرعي. باستخدام هذه المكالمة العودية، يمكنك البحث في كافة الدلائل الفرعية للدليل الجذر المعطى.

نموذج التعليمات البرمجية كاملة

  1. بدء تشغيل مشروع تطبيقات Visual C# Windows جديدة. بشكل افتراضي، نموذج الذي يدعى Form1 إنشاء.
  2. في القائمة عرض ، انقر فوق لعرض "مستكشف الحلول".
  3. في "مستكشف الحلول"، زر الماوس الأيمن فوق Form1، ومن ثم انقر فوق عرض التعليمات البرمجية.
  4. في إطار التعليمات البرمجية Form1 ثم تمييز وحذف كافة التعليمات البرمجية الموجودة.
  5. قم بلصق التعليمة البرمجية التالية في إطار التعليمات البرمجية ل Form1.
    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);            }        }    }}
    ملاحظةيجب تغيير التعليمات البرمجية في Visual Studio 2005 وفي Visual Studio 2008. في إصدارات Visual Studio التي تكون أقدم من Visual Studio 2005، Visual C# إضافة نموذج إلى المشروع عند إنشاء مشروع Windows Forms. ويسمى النموذج Form1. في Visual C# 2005 وفي الإصدارات الأحدث، يتم تسمية الملفات بين التي تمثل النموذج Form1.cs و Form1.designer.cs. كتابة التعليمات البرمجية في ملف Form1.cs. مصمم نماذج Windows بكتابة التعليمات البرمجية في الملف Form1.designer.cs.

    لتحويل نموذج التعليمات البرمجية Visual C# 2005 أو Visual C# 2008، إنشاء تطبيق Visual C# Windows جديد، ومن ثم اتبع الخطوات التالية:
    1. نسخ الكائن الزر والكائن مربع نص وكائنات Windows الأخرى إلى فئة جزئية Form1 في الملف Form1.Designer.cs.
    2. إضافة محتويات المقطع أسلوب InitializeComponent في التعليمات البرمجية أعلاه إلى أسلوب InitializeComponent في الملف Form1.Designer.cs. لصق المحتويات بعد المحتويات الحالية لأسلوب InitializeComponent .
    3. نسخ الأساليب التالية من التعليمات البرمجية أعلاه إلى فئة Form1 في الملف Form1.cs:
      • btnSearch_Click
      • Form1_Load
      • DirSearch
    4. إضافة استخدام System.IO؛ استخدام عبارة إلى الملف Form1.cs.
    لمزيد من المعلومات حول مصمم نماذج Windows، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
  6. اضغط F5 لبناء وتشغيل العينة البرنامج.
مراجع
لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
306777كيفية قراءة ملف نصي باستخدام System.IO و Visual C #

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 303974 - آخر مراجعة: 05/29/2013 23:35:00 - المراجعة: 4.0

  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
  • kbhowtomaster kbio kbmt KB303974 KbMtar
تعليقات
geScreens track by $index -->