Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để đệ quy mục tin thư thoại tra cứu bằng cách sử dụng Visual C#

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 303974
Để một phiên bản Microsoft Visual C++ .NET của bài viết này, hãy xem 307009.
Để một phiên bản Microsoft Visual Basic.net của bài viết này, hãy xem 306666.

Bài viết này đề cập để không gian tên Microsoft Khuôn khổ .NET lớp thư viện sau đây:
  • System.IO
Tóm tắt
Bài viết từng bước này cho thấy làm thế nào để đệ quy tìm mục tin thư thoại con cho các tập tin trong một ứng dụng C# Windows hình thức. A chuỗi tra cứu được quy định như vậy mà bạn có thể tra cứu cho các tập tin đó phù hợp với một một số tiêu chí kí tự đại diện đại diện. Mỗi một phần của mã giải thích khi cần thiết. Làm việc một mẫu mã cũng được cung cấp ở phần cuối của bài viết.

mục tin thư thoại đệ quy là một nhiệm vụ IO phổ biến cho các nhà phát triển. Làm FileSystemObject cho nhiệm vụ này dễ dàng cho mô hình đối tượng thành phần (COM) ứng dụng. Bây giờ công việc này đã trở nên dễ dàng hơn trong net. Tương tự như FileSystemObject, các lớp học trong không gian tên System.IO cung cấp cho một đối tượng theo định hướng cách để truy cập tập tin và mục tin thư thoại.

Yêu cầu

  • Microsoft Visual C# 2005 hoặc Microsoft Visual C# .NET

mục tin thư thoại đệ quy

Các lớp học thao tác tập tin và mục tin thư thoại nằm trong không gian tên System.IO . Trước khi bạn làm việc với các lớp học, bạn sẽ chuyển nhập không gian tên sau đây vào dự án của bạn:
using System.IO;
Các lớp học không gian tên System.IO cung cấp nhiều lớp học mà cho phép bạn làm việc với các tập tin và mục tin thư thoại. Các lớp học bao gồm các tập tin lớp học, lớp học mục tin thư thoại, và các lớp học hữu ích. Nhiều người trong số các lớp học có chứa tĩnh phương pháp mà bạn có thể gọi mà không cần phải khai báo một biến loại. Ví dụ, bạn có thể sử dụng các đối tượng mục tin thư thoại để có được các mục tin thư thoại con của một nhất định mục tin thư thoại.

Các mã sau đây sử dụng phương pháp GetDirectories tĩnh của các đối tượng mục tin thư thoại để trở về một loạt các dây. Mảng này có chứa mục tin thư thoại con đường tên cho mục tin thư thoại con của mục tin thư thoại C, nếu có.
string[] directories = Directory.GetDirectories("C:\\");
Đối tượng mục tin thư thoại cũng chứa một phương pháp gọi là GetFiles cho phép bạn lấy một chuỗi mảng của các tập tin phù hợp với một tiêu chí nhất định. Mẫu mã sau đây sử dụng các đối tượng tập tin để lấy tất cả các file trong mục tin thư thoại C kết thúc với một phần mở rộng .dll:
string[] files = Directory.GetFiles("C:\\", "*.dll");
Các phương pháp GetDirectoriesGetFiles của đối tượng mục tin thư thoại là tất cả những gì bạn cần để đệ quy tra cứu cho các tập tin mà phù hợp với chuỗi tra cứu. Các phương pháp sau đây được sử dụng để thực hiện đệ quy:
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);	}}
Mã trước đi một chuỗi, có chứa các mục tin thư thoại đó bạn muốn tra cứu, để DirSearch. Giá trị chuỗi này là đường dẫn đầy đủ của mục tin thư thoại. Bạn có thể sử dụng GetDirectories để lấy các mục tin thư thoại con của mục tin thư thoại được thông qua vào thủ tục của bạn. Bởi vì GetDirectories trả lại một mảng, bạn có thể sử dụng một cho/mỗi tuyên bố để iterate trong mỗi mục tin thư thoại con. Đối với mỗi mục tin thư thoại con, sử dụng GetFiles phương pháp để iterate qua các tập tin trong mục tin thư thoại đó. Giá trị của hộp văn bản vào hình thức của bạn thông qua để GetFiles. Hộp văn bản chứa chuỗi tra cứu bộ lọc kết quả rằng GetFiles trả về. Nếu bất kỳ tập tin phù hợp với tiêu chí tra cứu, chúng được thêm vào hộp danh sách của bạn. Đối với mỗi mục tin thư thoại con có vị trí, gọi DirSearch một lần nữa, và vượt qua nó một mục tin thư thoại con. Bằng cách sử dụng này gọi đệ quy, bạn có thể tra cứu tất cả các mục tin thư thoại con của mục tin thư thoại gốc được đưa ra.

Mã hoàn chỉnh mẫu

  1. Bắt đầu một dự án ứng dụng Visual C# Windows mới. theo mặc định, một hình thức được đặt tên theo Form1 là tạo ra.
  2. Trong menu xem , hãy nhấp vào để hiển thị giải pháp Explorer.
  3. Trong giải pháp Explorer, bấm chuột phải vào Form1, và sau đó nhấp vào Xem mã.
  4. Trong cửa sổ mã Form1, đánh dấu kiểm và sau đó xóa tất cả mã hiện tại.
  5. Dán đoạn mã sau trong cửa sổ mã của 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);            }        }    }}
    Lưu ýBạn phải thay đổi mã trong Visual Studio 2005 và trong Visual Studio 2008. Trong phiên bản của Visual Studio sớm hơn Visual Studio 2005, Visual C# thêm một hình thức cho các dự án khi bạn tạo một dự án cửa sổ hình thức. Các hình thức được đặt tên Form1. Trong Visual C# 2005 và trong phiên bản sau này, hai tập tin đại diện cho các hình thức được đặt tên Form1.cs và Form1.designer.cs. Bạn viết mã trong tập tin Form1.cs. Các nhà thiết kế hình thức Windows viết mã trong tập tin Form1.designer.cs.

    Để chuyển đổi các mẫu mã để Visual C# 2005 hoặc Visual C# 2008, tạo ra một ứng dụng Visual C# Windows mới, và sau đó làm theo các bước sau:
    1. Sao chép các đối tượng nút chọn một , đối tượng hộp văn bản và các đối tượng khác của cửa sổ lớp Form1 một phần trong tập tin Form1.Designer.cs.
    2. Thêm nội dung của phần phương pháp InitializeComponent trong mã ở trên để các phương pháp InitializeComponent trong các tập tin Form1.Designer.cs. Dán nội dung sau khi nội dung hiện tại của các phương pháp InitializeComponent .
    3. Sao chép các phương pháp sau đây từ mã trên vào Form1 lớp trong Form1.cs file:
      • btnSearch_Click
      • Form1_Load
      • DirSearch
    4. Thêm một bằng cách sử dụng System.IO; sử dụng báo cáo để các tập tin Form1.cs.
    Để biết thêm chi tiết về thiết kế hình thức Windows, ghé thăm Web site sau của Microsoft Developer Network (MSDN):
  6. Nhấn F5 để xây dựng bật lên và chạy các mẫu chương trình.
Tham khảo
Để biết thêm chi tiết, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
306777Làm thế nào để đọc một tập tin văn bản bằng cách sử dụng System.IO và Visual C#

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 303974 - Xem lại Lần cuối: 05/30/2013 10:05:00 - Bản sửa đổi: 3.0

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

  • kbhowtomaster kbio kbmt KB303974 KbMtvi
Phản hồi