如何使用 System.IO 和視覺化 C# 讀取文字檔

文章翻譯 文章翻譯
文章編號: 306777 - 檢視此文章適用的產品。
本文曾發行於 CHT306777
這份文件的 Microsoft Visual Basic.NET 版本,請參閱 302309.

下列的 Microsoft.NET Framework 類別庫命名空間會參照這份文件:
  • System.IO
  • System.Collections
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步為您示範如何從文字檔 (.txt),擷取資訊,並接著將該資訊顯示給使用者使用陣列清單類別。

需求

Microsoft Visual C#

讀取文字檔視覺化 C#

開啟和讀取檔案的讀取權限是輸入/輸出 (IO) 功能,很重要的一部分,即使您不需要寫入的檔案有問題。本範例開啟檔案以進行讀取,也就是用來讀取文字檔,但不適用於二進位檔案。這個範例會使用許多方法可用於開啟檔案的其中一個。

許多資料結構,可用來儲存從檔案擷取的資訊,雖然陣列清單類別是要使用的最簡單的結構。若要開啟並讀取檔案,此範例會使用System.IO命名空間,特別是System.IO.StreamReader類別中的物件。

附註這個範例需要某種形式的文字 (.txt) 檔案,要從其中讀取。

載入和讀取文字檔從視覺 C# 中,請依照下列步驟執行:
  1. 啟動 Microsoft Visual Studio。
  2. 建立新的主控台應用程式中視覺化 C# 中。Visual Studio 建立靜態類別,以及空白的main ()程序。
  3. 請確認此專案至少參考系統命名空間。使用using陳述式上的系統System.IOSystem.Collections命名空間,使您不需要限定這些命名空間,稍後在程式碼中的宣告。您必須使用這些陳述式,在任何其他宣告之前。
    using System;
    using System.IO;
    using System.Collections;
    					
  4. 若要開啟檔案以進行讀取,建立StreamReader物件的新執行個體,並將檔案的路徑傳遞至建構函式,如下所示:
    StreamReader objReader = new StreamReader("c:\\test.txt");
    					
  5. 您必須將用來儲存檔案的每一行,因為您所處理的字串變數。因為您將陣列的陣列清單以加入這些程式碼行,宣告,也建立該型別的物件。
    string sLine="";
    ArrayList arrText = new ArrayList();
    					
  6. 有幾種方式可以讀取檔案中,納入整個檔案讀取的ReadToEnd方法一次。不過,如這個範例中,您可以使用ReadLine方法一次將檔案的同一行中。當到達檔案結尾時,這個方法會傳回 null,可讓您可停止您的迴圈。當您從檔案讀取每一行,您可以使用陣列清單Add方法以行插入您的陣列清單的類別。
    while (sLine != null)
    {
    	sLine = objReader.ReadLine();
    	if (sLine != null)
    		arrText.Add(sLine);
    }
    objReader.Close();
    					
  7. 您可以使用For Each迴圈來寫入主控台您剛填滿的陣列清單的內容,如下所示:
    foreach (string sOutput in arrText)
    	Console.WriteLine(sOutput);
    Console.ReadLine();
    					
  8. 儲存並執行您的程式碼,它會產生至主控台檔案的清單。

完整的程式碼

using System;
using System.IO;
using System.Collections;

namespace TextFileReader_csharp
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{
			StreamReader objReader = new StreamReader("c:\\test.txt");
			string sLine="";
			ArrayList arrText = new ArrayList();

			while (sLine != null)
			{
				sLine = objReader.ReadLine();
				if (sLine != null)
					arrText.Add(sLine);
			}
                        objReader.Close();

			foreach (string sOutput in arrText)
				Console.WriteLine(sOutput);
			Console.ReadLine();
		}
	}
}
				

疑難排解

有幾件事要注意的是當您使用檔案 I/O,包括下列項目:
  • 每次存取檔案時,沒有您嘗試讀取或寫入該檔案可能無法在系統上,或可能正在使用中的可能性。
  • 這個範例會讀取整個檔案載入記憶體,然後才能處理該檔案。您可能會遇到的情況下,在其中的檔案太大而無法保留在記憶體中,或您沒有存取檔案的權限。
這些情況下會導致引發例外狀況。很好的作法提供try...catch區塊來處理這些常見的問題。

屬性

文章編號: 306777 - 上次校閱: 2012年10月16日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
關鍵字:?
kbcollections kbhowtomaster kbio kbmt KB306777 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:306777
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