如何從讀取和寫入至文字檔使用 Visual C++.NET 或 Visual C++ 2005

文章翻譯 文章翻譯
文章編號: 816148 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何從讀取和寫入至文字檔使用 Visual C++.NET 或 Visual C++ 2005年。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構和您必須擁有 Service Pack:
  • Microsoft Visual C++.NET 或 Microsoft Visual C++ 2005
本文假設您已熟悉下列主題:
  • Microsoft Visual C++.NET 或 Visual C++ 2005

讀取及寫入文字檔

Write a Text File (Example 1) 和 「 Write a Text File (Example 2) 章節會說明如何使用 StreamWriter 類別來寫入檔案的文字。Read a Text File > 一節說明如何使用 StreamReader 類別讀取文字檔案。

寫入文字檔 (範例 1)

下列程式碼使用 StreamWriter 類別,開啟、 寫入,並關閉文字檔案。至 StreamReader 類別類似的方式,您可以將文字檔案的路徑名稱傳遞至 StreamWriter 建構函式,以自動開啟該檔案。WriteLine 方法會將完整一行文字寫入至文字檔案。
  1. 啟動 Visual Studio.NET 或 Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample1,],然後再按一下 [確定]]。
  5. 開啟 Sample1.cpp 檔案。加入下列程式碼:
    using namespace System::IO;
  6. Main 函式的現有的程式碼取代下列程式碼:
        try 
        {
    
    	    //Pass the file path and file name to the StreamWriter Constructor.
    	    StreamWriter* sw = new StreamWriter(S"C:\\Test.txt");
    
    	    //Write a line of text.
    	    sw->WriteLine(S"Hello World!!");
    
    	    //Write a second line of text.
    	    sw->WriteLine("From the StreamWriter class");
    
    	    //Close the file.
    	    sw->Close();
        }
        catch(Exception* e)
        {
            Console::WriteLine("Exception: {0}",e->Message);
        }
        __finally 
        {
            Console::WriteLine("Executing finally block.");
        }	
        return 0;
    
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。這個程式碼會建立名 Test.txt 為磁碟機 C.開啟 Test.txt 檔案在文字編輯器如 「 記事本 」 中的檔案。將 Test.txt 檔案包含下列兩行文字:
    Hello World!!
    From the StreamWriter class
    

寫入文字檔 (範例 2)

下列程式碼使用 StreamWriter 類別,開啟、 寫入,並關閉文字檔案。與前一個範例不同的是這段程式碼會將兩個額外的參數傳遞到建構函式。第一個參數是檔案路徑和檔案的檔案名稱。第二個參數中,True,指定開啟檔案中附加模式。如果您指定 為 False 給第二個參數,檔案的內容會覆寫每次執行程式碼。第三個參數指定 Unicode。因此,StreamWriter 類別將編碼 Unicode 格式檔案。您也可以指定下列的編碼方式為第三個參數:
  • ASC11
  • Unicode
  • UTF7
  • UTF8
只不過 Write 方法並不會自動內嵌換行或換行 (CR/LF) 字元組合,Write 方法很類似 WriteLine] 方法。您想要一次書寫一個字元時,這非常有用。
  1. 啟動 Visual Studio.NET 或 Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample3,],然後再按一下 [確定]]。
  5. 開啟 Sample3.cpp 檔案。加入下列程式碼:
    using namespace System::IO;
    using namespace System::Text;
    
  6. Main 函式的現有的程式碼取代下列程式碼:
        Int64 x;
        try 
        {
    	    //Open the File.
            StreamWriter* sw = new StreamWriter(S"C:\\Test1.txt", true, Encoding::ASCII);
    
    	    //Write out the numbers 0 to 9 on the same line.
    	    for(x=0; x < 10; x++)
    	    {
    		    sw->Write(x);
    	    }
    
    	    //Close the file.
    	    sw->Close();
        }
        catch(Exception* e)
        {
            Console::WriteLine(S"Exception: {0}", e->Message);
        }
        __finally 
        {
            Console::WriteLine(S"Executing finally block.");
        }	
        return 0;
    
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。這個程式碼會建立名 Test1.txt 為磁碟機 C.開啟 Test1.txt 檔案在文字編輯器如 「 記事本 」 中的檔案。Test1.txt 檔案包含下列單行文字:
    0123456789

讀取文字檔案

下列程式碼使用 StreamReader 類別,開啟、 讀取,並關閉文字檔案。您可以將文字檔案的路徑名稱傳遞給 StreamReader 建構函式,會自動開啟該檔案。ReadLine 方法會讀取每一行文字,並再讀取時,遞增檔案指標到下一行。當 ReadLine 方法達到檔案結尾時,它會傳回 null 參考。
  1. 啟動 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample2,],然後再按一下 [確定]]。
  5. 開啟 Sample2.cpp 檔案。加入下列程式碼:
    using namespace System::IO;
  6. 主要的函式的現有的程式碼取代下列程式碼:
        String* line;
        try 
            {
    	        //Pass the file path and file name to the StreamReader constructor.
    	        StreamReader* sr = new StreamReader(S"C:\\test1.txt");
    
    	        //Read the first line of text.
    	        line = sr->ReadLine();
    
    	        //Continue to read until you reach end of file.
    	        while (line != NULL) 
    	        {
    		        //Write the lie to console window.
                    Console::WriteLine(line);
    		        //Read the next line.
                    line = sr->ReadLine();
    	        }
    
    	        //Close the file.
    	        sr->Close();
                Console::ReadLine();
            }
            catch(Exception* e)
            {
                Console::WriteLine(S"Exception: {0}",e->Message);
            }
            __finally 
            {
                Console::WriteLine(S"Executing finally block.");
            }
            return 0;
    
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。按 ENTER 鍵來關閉主控台視窗。[主控台] 視窗會顯示 Test1.txt 檔案的內容。

完成程式碼清單

寫入文字檔 (版本 1)


#include <tchar.h>
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int _tmain()
{
    try 
    {

	    //Pass the file path and file name to the StreamWriter Constructor.
	    StreamWriter* sw = new StreamWriter(S"C:\\Test.txt");

	    //Write a line of text.
	    sw->WriteLine(S"Hello World!!");

	    //Write a second line of text.
	    sw->WriteLine("From the StreamWriter class");

	    //Close the file
	    sw->Close();
    }
    catch(Exception* e)
    {
        Console::WriteLine("Exception: {0}",e->Message);
    }
    __finally 
    {
        Console::WriteLine("Executing finally block.");
    }	
    return 0;
}
附註您必須加入通用語言執行階段支援編譯器選項 (/ clr:oldSyntax) 來順利編譯先前的程式碼範例的 Visual C++ 2005年中。 若要在 Visual C++ 2005年中加入常用的語言執行階段支援編譯器選項,請依照下列步驟執行:
  1. 按一下 [專案,] 然後按一下 [<ProjectName> 屬性

    附註<ProjectName> 是專案的名稱的預留位置。
  2. 展開 [組態屬性,] 然後按一下 [一般
  3. 按一下以選取 通用語言執行階段支援、 舊語法 (/ clr:oldSyntax)通用語言執行階段支援 的專案設定中在右窗格中,按一下 套用,],然後再按一下 [確定]
如需有關通用語言執行階段支援編譯器選項,請造訪下列 Microsoft 網站:
/ clr (通用語言執行階段編譯)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

寫入文字檔 (版本 2)

#include <tchar.h>
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int _tmain()
{
    Int64 x;
    try 
    {
	    //Open the File.
        StreamWriter* sw = new StreamWriter(S"C:\\Test1.txt", true, Encoding::ASCII);

	    //Write out the numbers 0 to 9 on the same line.
	    for(x=0; x < 10; x++)
	    {
		    sw->Write(x);
	    }

	    //Close the file.
	    sw->Close();
    }
    catch(Exception* e)
    {
        Console::WriteLine(S"Exception: {0}", e->Message);
    }
    __finally 
    {
        Console::WriteLine(S"Executing finally block.");
    }	
    return 0;
}

讀取文字檔案

#include <tchar.h>
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int _tmain()
{
    String* line;
    try 
        {
	        //Pass the file path and file name to the StreamReader constructor.
	        StreamReader* sr = new StreamReader(S"C:\\test.txt");

	        //Read the first line of text.
	        line = sr->ReadLine();

	        //Continue to read until you reach end of file.
	        while (line != NULL) 
	        {
		        //Write the lie to console window.
                Console::WriteLine(line);
		        //Read the next line.
                line = sr->ReadLine();
	        }

	        //Close the file.
	        sr->Close();
            Console::ReadLine();
        }
        catch(Exception* e)
        {
            Console::WriteLine(S"Exception: {0}",e->Message);
        }
        __finally 
        {
            Console::WriteLine(S"Executing finally block.");
        }
        return 0;
}

疑難排解

對於所有的檔案操作是良好的程式設計作法來包裝程式碼來處理錯誤和例外狀況在 try-catch-__finally 區塊內。特別,您可以使檔案鎖定無限期地釋放最後一個區塊中檔案的控制代碼。一些可能的錯誤包括不存在的檔案或檔案已在使用中。

?考

如需有關 StreamReaderStreamWriter 類別的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/system.io.streamreader(vs.71).aspx
http://msdn2.microsoft.com/en-us/library/system.io.streamwriter(vs.71).aspx

屬性

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