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

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

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


تشير هذه المقالة إلى مساحة الاسم Microsoft.NET Framework مكتبة الفئة التالية:
  • System.IO

ملخص

يوضح هذا المقال خطوة بخطوة كيفية الدلائل البحث بشكل متكرر للملفات في أحد تطبيقات Windows Forms C#. تحديد سلسلة بحث حيث يمكنك البحث عن الملفات التي تطابق معايير معينة بدل. يتم توضيح كل جزء من التعليمات البرمجية عند الضرورة. يتم أيضا توفير نموذج التعليمات برمجية عمل في نهاية المقالة.

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

متطلبات

  • 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.

    لتحويل نموذج التعليمة البرمجية إلى 2005 Visual C# أو 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":

كيفية قراءة ملف نصي باستخدام System.IO و Visual C# 306777

خصائص

رقم الموضوع: 303974 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات