C#讀取和寫入文本檔

StreamReaderStreamWriter類用於從文本檔讀取和寫入數據。這些類繼承自抽象基類Stream,它支持讀取和寫入檔流中的位元組。

StreamReader類

StreamReader類是從抽象基類TextReader繼承,它也是一個讀取系列字元的讀取器。 下表介紹了StreamReader類的一些常用方法:

序號 方法 描述
1 public override void Close() 它關閉StreamReader對象和底層流,並釋放與讀取器相關聯的任何系統資源。
2 public override int Peek() 返回下一個可用字元,但不消耗它。
3 public override int Read() 從輸入流讀取下一個字元,並將字元位置提前一個。

示例

以下示例演示如何C#程式讀取一個名稱為Jamaica.txt的文本檔,該檔內容如下所示:

using System;
using System.IO;

namespace FileApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         try
         {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("c:/jamaica.txt"))
            {
               string line;

               // Read and display lines from the file until
               // the end of the file is reached.
               while ((line = sr.ReadLine()) != null)
               {
                  Console.WriteLine(line);
               }
            }
         }
         catch (Exception e)
         {

            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
         }

         Console.ReadKey();
      }
   }
}

在編譯和運行程式時,猜一下它顯示的內容 -



StreamWriter類

StreamWriter類繼承自抽象類TextWriter表示一個寫入器,可以編入序列字元。

下表描述了此類最常用的方法:

序號 方法 描述
1 public override void Close() 關閉當前StreamWriter對象和底層流。
2 public override void Flush() 清除當前寫入程式的所有緩衝區,並將任何緩衝的數據寫入底層流。
3 public virtual void Write(bool value) 將布爾值的文本表示寫入文本字串或流(從TextWriter繼承)
4 public override void Write(char value) 將字元寫入流
5 public virtual void Write(decimal value) 將十進位值的文本表示形式寫入文本字串或流。
6 public virtual void Write(double value) 8位元組浮點值的文本表示寫入文本字串或流。
7 public virtual void Write(int value) 4位元組有符號整數的文本表示寫入文本字串或流。
8 public override void Write(string value) 將一個字串寫入流。
9 public virtual void WriteLine() 將行終止符寫入文本字串或流。

有關方法的完整列表,請訪問Microsoft的 C# 文檔。

示例

以下示例演示使用StreamWriter類將文本數據寫入檔:

using System;
using System.IO;

namespace FileApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         string[] names = new string[] {"Max Su", "Sukida"};
         using (StreamWriter sw = new StreamWriter("all_names.txt"))
         {
            foreach (string s in names)
            {
               sw.WriteLine(s);
            }
         }
         // Read and show each line from the file.
         string line = "";
         using (StreamReader sr = new StreamReader("all_names.txt"))
         {
            while ((line = sr.ReadLine()) != null)
            {
               Console.WriteLine(line);
            }
         }
         Console.ReadKey();
      }
   }
}

當上述代碼被編譯並執行時,它產生以下結果:

Max Su
Sukida

上一篇: C#檔(I/O) 下一篇: C#屬性