C# 文本文件的讀寫(xiě)

C# 文件的輸入與輸出 C# 文件的輸入與輸出

StreamReaderStreamWriter 類(lèi)用于文本文件的數(shù)據(jù)讀寫(xiě)。這些類(lèi)從抽象基類(lèi) Stream 繼承,Stream 支持文件流的字節(jié)讀寫(xiě)。

StreamReader 類(lèi)

StreamReader 類(lèi)繼承自抽象基類(lèi) TextReader,表示閱讀器讀取一系列字符。

下表列出了 StreamReader 類(lèi)中一些常用的方法

序號(hào)方法 & 描述
1public override void Close()
關(guān)閉 StreamReader 對(duì)象和基礎(chǔ)流,并釋放任何與讀者相關(guān)的系統(tǒng)資源。
2public override int Peek()
返回下一個(gè)可用的字符,但不使用它。
3public override int Read()
從輸入流中讀取下一個(gè)字符,并把字符位置往前移一個(gè)字符。

如需查看完整的方法列表,請(qǐng)?jiān)L問(wèn)微軟的 C# 文檔。

實(shí)例

下面的實(shí)例演示了讀取名為 Jamaica.txt 的文件。文件如下:

Down the way where the nights are gay
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop
using System;
using System.IO;

namespace FileApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 創(chuàng)建一個(gè) StreamReader 的實(shí)例來(lái)讀取文件 
                // using 語(yǔ)句也能關(guān)閉 StreamReader
                using (StreamReader sr = new StreamReader("c:/jamaica.txt"))
                {
                    string line;
                   
                    // 從文件讀取并顯示行,直到文件的末尾 
                    while ((line = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(line);
                    }
                }
            }
            catch (Exception e)
            {
                // 向用戶顯示出錯(cuò)消息
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }
    }
}

當(dāng)您編譯和執(zhí)行上面的程序時(shí),它會(huì)顯示文件的內(nèi)容。

StreamWriter 類(lèi)

StreamWriter 類(lèi)繼承自抽象類(lèi) TextWriter,表示編寫(xiě)器寫(xiě)入一系列字符。

下表列出了 StreamWriter 類(lèi)中一些常用的方法

序號(hào)方法 & 描述
1public override void Close()
關(guān)閉當(dāng)前的 StreamWriter 對(duì)象和基礎(chǔ)流。
2public override void Flush()
清理當(dāng)前編寫(xiě)器的所有緩沖區(qū),使得所有緩沖數(shù)據(jù)寫(xiě)入基礎(chǔ)流。
3public virtual void Write(bool value)
把一個(gè)布爾值的文本表示形式寫(xiě)入到文本字符串或流。(繼承自 TextWriter。)
4public override void Write( char value )
把一個(gè)字符寫(xiě)入到流。
5public virtual void Write( decimal value )
把一個(gè)十進(jìn)制值的文本表示形式寫(xiě)入到文本字符串或流。
6public virtual void Write( double value )
把一個(gè) 8 字節(jié)浮點(diǎn)值的文本表示形式寫(xiě)入到文本字符串或流。
7public virtual void Write( int value )
把一個(gè) 4 字節(jié)有符號(hào)整數(shù)的文本表示形式寫(xiě)入到文本字符串或流。
8public override void Write( string value )
把一個(gè)字符串寫(xiě)入到流。
9public virtual void WriteLine()
把行結(jié)束符寫(xiě)入到文本字符串或流。

如需查看完整的方法列表,請(qǐng)?jiān)L問(wèn)微軟的 C# 文檔。

實(shí)例

下面的實(shí)例演示了使用 StreamWriter 類(lèi)向文件寫(xiě)入文本數(shù)據(jù):

using System;
using System.IO;

namespace FileApplication
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] names = new string[] {"Zara Ali", "Nuha Ali"};
            using (StreamWriter sw = new StreamWriter("names.txt"))
            {
                foreach (string s in names)
                {
                    sw.WriteLine(s);

                }
            }

            // 從文件中讀取并顯示每行
            string line = "";
            using (StreamReader sr = new StreamReader("names.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
            Console.ReadKey();
        }
    }
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

Zara Ali
Nuha Ali

C# 文件的輸入與輸出 C# 文件的輸入與輸出