如何在 Visual C# 2005 Express 版中執行基本的檔案 I/O 作業

文章翻譯 文章翻譯
文章編號: 910356 - 檢視此文章適用的產品。
本文章的有 Microsoft Visual Basic.NET] 版本請參閱 304427
本文章的有 Microsoft Visual C++.NET] 版本請參閱 307398
本文章的有 Microsoft Visual C#.NET] 版本請參閱 304430
這篇文章是指 System.IO Microsoft.NET Framework 類別庫命名空間。
全部展開 | 全部摺疊

在此頁中

簡介

本文將逐步告訴您,如何在 Microsoft Visual C# 2005 Express 版中執行基本的檔案 I/O 作業。如果您新增至 Microsoft.NET Framework 您會發現檔案作業在 Microsoft.NET 中的物件模型是類似於 FileSystemObject 物件模型,是與許多 Microsoft Visual Studio 6.0 開發人員受歡迎。若要簡化轉換,本文所述的功能根據下列 「 Microsoft 知識庫 」 文件:
186118如何使用 FileSystemObject 與 Visual Basic
您仍然可以在.NET 中使用 FileSystemObject 物件。因為 FileSystemObject 物件元件物件模型 (COM) 元件.NET 會需要您透過 Interop 層存取 FileSystemObject 物件。如果想使用的包裝函式.NET 會為您產生元件的包裝函式。不過,下列類別在.NET Framework 可以提供當您使用沒有 Interop 的圖層的額外負荷之 FileSystemObject 物件時,是無法使用的功能:
  • 檔案 類別
  • FileInfo 類別
  • 目錄 類別
  • DirectoryInfo 類別
  • 其他相關的類別

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Visual C# 2005 Express 版或 Microsoft Visual Studio 2005

示範的檔案 I/O 作業

本文中的程式碼範例說明如何執行基本的檔案 I/O 作業。Step-by-step 的範例 > 一節將告訴您,如何建立示範下列的檔案 I/O 作業的範例程式:
  • 讀取文字檔案。
  • 寫入文字檔案。
  • 檢視檔案資訊。
  • 列出磁碟機。
  • 列出資料夾。
  • 列出的檔案。
附註如果想直接使用下列程式碼範例請考慮下列各項:
  • 您必須包含 System.IO 命名空間,如下所示。
    using System.IO;
  • 您必須宣告 winDir 變數,如下所示。
    string    winDir=System.Environment.GetEnvironmentVariable("windir");
  • 您必須宣告 addListItem 函式,如下所示。
    private void addListItem(string value)
    {
    	this.listbox1.Items.Add(value);
    }
    附註而非宣告和使用 addListItem 函數,您可以直接使用以下的陳述式。
    this.listbox1.Items.Add(value);

讀取文字檔案

下列的程式碼範例會使用 StreamReader 類別讀取 System.ini 檔。檔案的內容加入至 清單方塊 控制項。重試...catch 區塊用來通知應用程式,如果檔案是空白。有許多方法來判斷何時到達檔案結尾。這個程式碼範例會使用 查看 方法之前先讀取而檢查下一行
StreamReader reader = new StreamReader(winDir + "\\system.ini");
            try
            {
                do
                {
                    addListItem(reader.ReadLine());
                }
                while (reader.Peek() != -1);
            }

            catch
            {
                addListItem("File is empty.");
            }

            finally
            {
                reader.Close();
            }

寫入文字檔

建立一個檔案,並寫入至檔案,下列的程式碼範例會使用 StreamWriter 類別。如果您有現有的檔案,您可以開啟現有的檔案在
StreamWriter writer = new StreamWriter("c:\\KBTest.txt");
            writer.WriteLine("File created by using StreamWriter class.");
            writer.Close();
            this.listBox1.Items.Clear();
            addListItem("File written to C:\\KBTest.txt");
相同的方式。

檢視檔案資訊

下列程式碼範例會使用 FileInfo 物件來存取檔案的內容。這個程式碼範例中使用 Notepad.exe 檔。屬性會出現在
FileInfo FileProps = new FileInfo(winDir + "\\notepad.exe");
            addListItem("File Name = " + FileProps.FullName);
            addListItem("Creation Time = " + FileProps.CreationTime);
            addListItem("Last Access Time = " + FileProps.LastAccessTime);
            addListItem("Last Write Time = " + FileProps.LastWriteTime);
            addListItem("Size = " + FileProps.Length);
            FileProps = null;
一個 清單方塊 控制項。

清單磁碟機

下列的程式碼範例會使用 目錄 類別和 磁碟機] 類別來擷取系統上邏輯磁碟機的清單。這個程式碼] 範例結果會出現在
string[] drives = Directory.GetLogicalDrives();
    foreach(string drive in drives)
    {
        addListItem(drive);
    }
一個 清單方塊 控制項。

清單資料夾

下列的程式碼範例會使用的 目錄 類別 GetDirectories 方法來擷取清單的
string[] dirs = Directory.GetDirectories(winDir);
    foreach(string dir in dirs)
        {
            addListItem(dir);
        }
資料夾。

列出檔案

下列的程式碼範例會使用的 目錄 類別 GetFiles 方法擷取一份
string[] files = Directory.GetFiles(winDir);
            foreach (string fileName in files)
            {
                addListItem(fileName);
            }
當使用者嘗試存取檔案時,可能會發生各種問題。 檔案。檔案可能不存在,或檔案可能會被使用。 而且,使用者可能沒有權限上之檔案或他們嘗試存取的資料夾。 當您撰寫程式碼,並使條款來處理可能會產生的例外狀況,您必須考慮這些可能性。

逐步範例

如果要建立示範基本的檔案 I/O 作業的範例程式,請依照下列步驟執行:
  1. 在 Visual C# 2005 Express 版或 Visual Studio 2005 中,建立新的 Visual C# Windows 應用程式,名為 WindowsApplication1。預設情況下,會建立名為 Form1 的表單。
  2. 在 [方案總管] 中以滑鼠右鍵按一下 [Form1.cs,然後按一下 [檢視程式碼
  3. 刪除所有程式碼在程式碼編輯器中。
  4. 下列程式碼貼到程式碼編輯器。
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.button1.Text = "Read Text File";
                this.button2.Text = "Write Text File";
                this.button3.Text = "View File Information";
                this.button4.Text = "List Drives";
                this.button5.Text = "List Subfolders";
                this.button6.Text = "List Files";
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                // How to read a text file.
                // try...catch is to deal with a file that has a length of 0 bytes.
                this.listBox1.Items.Clear();
                StreamReader reader = new StreamReader(winDir + "\\system.ini");
                try
                {
                    do
                    {
                        addListItem(reader.ReadLine());
                    }
                    while (reader.Peek() != -1);
                }
    
                catch
                {
                    addListItem("File is empty.");
                }
    
                finally
                {
                    reader.Close();
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                // How to create and write to a text file.
                StreamWriter writer = new StreamWriter("c:\\KBTest.txt");
                writer.WriteLine("File created by using StreamWriter class.");
                writer.Close();
                this.listBox1.Items.Clear();
                addListItem("File written to C:\\KBTest.txt");
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                // How to retrieve file properties (example uses Notepad.exe).
                this.listBox1.Items.Clear();
                FileInfo FileProps = new FileInfo(winDir + "\\notepad.exe");
                addListItem("File Name = " + FileProps.FullName);
                addListItem("Creation Time = " + FileProps.CreationTime);
                addListItem("Last Access Time = " + FileProps.LastAccessTime);
                addListItem("Last Write Time = " + FileProps.LastWriteTime);
                addListItem("Size = " + FileProps.Length);
                FileProps = null;
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                // How to obtain a list of disk drives.
                this.listBox1.Items.Clear();
                string[] drives = Directory.GetLogicalDrives();
                foreach (string drive in drives)
                {
                    addListItem(drive);
                }
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                // How to obtain a list of folders.
                // Example uses Windows folder.
                this.listBox1.Items.Clear();
                string[] dirs = Directory.GetDirectories(winDir);
                foreach (string dir in dirs)
                {
                    addListItem(dir);
                }
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                // How to obtain a list of files.
                // Example uses Windows folder.
                this.listBox1.Items.Clear();
                string[] files = Directory.GetFiles(winDir);
                foreach (string fileName in files)
                {
                    addListItem(fileName);
                }
            }
        }
    }
  5. 在 [方案總管] 中 Form1.Designer.cs,] 上按一下滑鼠右鍵,然後按一下 [檢視程式碼
  6. 刪除所有程式碼在程式碼編輯器中。
  7. 下列程式碼貼到程式碼編輯器。
    namespace WindowsApplication1
    {
        partial class Form1
        {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            private string winDir = System.Environment.GetEnvironmentVariable("windir");
    
            /// <summary>
            /// Clean up any resources that are being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            private void addListItem(string value)
            {
                this.listBox1.Items.Add(value);
            }
    
            #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.listBox1 = new System.Windows.Forms.ListBox();
                this.button1 = new System.Windows.Forms.Button();
                this.button2 = new System.Windows.Forms.Button();
                this.button3 = new System.Windows.Forms.Button();
                this.button4 = new System.Windows.Forms.Button();
                this.button5 = new System.Windows.Forms.Button();
                this.button6 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // listBox1
                // 
                this.listBox1.FormattingEnabled = true;
                this.listBox1.Location = new System.Drawing.Point(23, 24);
                this.listBox1.Name = "listBox1";
                this.listBox1.Size = new System.Drawing.Size(525, 251);
                this.listBox1.TabIndex = 0;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(23, 290);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(171, 23);
                this.button1.TabIndex = 1;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // button2
                // 
                this.button2.Location = new System.Drawing.Point(23, 319);
                this.button2.Name = "button2";
                this.button2.Size = new System.Drawing.Size(171, 23);
                this.button2.TabIndex = 2;
                this.button2.Text = "button2";
                this.button2.UseVisualStyleBackColor = true;
                this.button2.Click += new System.EventHandler(this.button2_Click);
                // 
                // button3
                // 
                this.button3.Location = new System.Drawing.Point(200, 290);
                this.button3.Name = "button3";
                this.button3.Size = new System.Drawing.Size(171, 23);
                this.button3.TabIndex = 3;
                this.button3.Text = "button3";
                this.button3.UseVisualStyleBackColor = true;
                this.button3.Click += new System.EventHandler(this.button3_Click);
                // 
                // button4
                // 
                this.button4.Location = new System.Drawing.Point(200, 319);
                this.button4.Name = "button4";
                this.button4.Size = new System.Drawing.Size(171, 23);
                this.button4.TabIndex = 4;
                this.button4.Text = "button4";
                this.button4.UseVisualStyleBackColor = true;
                this.button4.Click += new System.EventHandler(this.button4_Click);
                // 
                // button5
                // 
                this.button5.Location = new System.Drawing.Point(377, 290);
                this.button5.Name = "button5";
                this.button5.Size = new System.Drawing.Size(171, 23);
                this.button5.TabIndex = 5;
                this.button5.Text = "button5";
                this.button5.UseVisualStyleBackColor = true;
                this.button5.Click += new System.EventHandler(this.button5_Click);
                // 
                // button6
                // 
                this.button6.Location = new System.Drawing.Point(377, 319);
                this.button6.Name = "button6";
                this.button6.Size = new System.Drawing.Size(171, 23);
                this.button6.TabIndex = 6;
                this.button6.Text = "button6";
                this.button6.UseVisualStyleBackColor = true;
                this.button6.Click += new System.EventHandler(this.button6_Click);
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(580, 400);
                this.Controls.Add(this.button6);
                this.Controls.Add(this.button5);
                this.Controls.Add(this.button4);
                this.Controls.Add(this.button3);
                this.Controls.Add(this.button2);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.listBox1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
            private System.Windows.Forms.ListBox listBox1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.Button button2;
            private System.Windows.Forms.Button button3;
            private System.Windows.Forms.Button button4;
            private System.Windows.Forms.Button button5;
            private System.Windows.Forms.Button button6;
        }
    }
  8. 按下 F5 以建置並執行應用程式。
  9. 按一下按鈕以檢視不同的動作。
附註預設情況下,Visual C# 2005 Express 版或 Visual Studio 2005 將一表單加入專案建立 Windows Form 專案時。表單名為 Form1。代表表單的兩個檔案被命名 Form1.cs 檔案和 Form1.designer.cs 檔案。 Form1.cs 檔案中撰寫程式碼。Windows Form 設計工具將 Form1.designer.cs 檔案中寫入程式碼。

如需有關 Windows Form 設計工具在 Visual C# 2005 Express 版或 Visual Studio 2005 中的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/ms173077.aspx

屬性

文章編號: 910356 - 上次校閱: 2006年12月11日 - 版次: 1.3
這篇文章中的資訊適用於:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Team System Test Edition
關鍵字:?
kbmt kbvs2005std kbvs2005mos kbvs2005exp kbvs2005pro kbvs2005search kbio kbhowtomaster kbsample kbstepbystep kbcodesnippet kbcode kbhowto KB910356 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:910356
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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