C#檔案(I/O)


檔案是儲存在具有特定名稱和目錄路徑的磁碟中的資料的集合。當檔案開啟以進行讀取或寫入時,它將成為流。

流基本上是通過通訊路徑的位元組序列。有兩個主要流:輸入流和輸出流。輸入流用於從檔案讀取資料(讀取操作),輸出流用於寫入檔案(寫入操作)。

C# I/O類

System.IO名稱空間具有各種類,用於執行許多檔案操作,例如:建立和刪除檔案,從檔案讀取或寫入檔案,關閉檔案等。

下表顯示了System.IO名稱空間中的一些常用的非抽象類:

I/O類 描述
BinaryReader 從二進位制流中讀取原始資料。
BinaryWriter 以二進位制格式寫入原始資料。
BufferedStream 一個位元組流的臨時儲存。
Directory 有助於操縱目錄結構。
DirectoryInfo 用於對目錄執行操作
DriveInfo 提供驅動器的資訊。
File 用於幫助操縱檔案。
FileInfo 用於對檔案執行操作。
FileStream 用於讀取和寫入檔案中的任何位置。
MemoryStream 用於隨機存取儲存在記憶體中的流式資料。
Path 執行路徑資訊的操作。
StreamReader 用於從位元組流讀取字元。
StreamWriter 用於將字元寫入到流中。
StringReader 用於從字串緩衝區讀取。
StringWriter 用於寫入字串緩衝區。

FileStream類

System.IO名稱空間中的FileStream類有助於讀取,寫入和關閉檔案。這個類派生自抽象類Stream

需要建立一個FileStream物件來建立一個新檔案或開啟現有檔案。建立FileStream物件的語法如下:

FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

例如,建立一個FileStream物件F來讀取一個名稱為sample.txt的檔案,如下所示:

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
  • FileMode - FileMode列舉器定義開啟檔案的各種方法。FileMode列舉器的成員有:

    • Append:它開啟一個現有的檔案,並將游標放在檔案的最後,或者如果該檔案不存在則建立此檔案。
    • Create:它建立一個新檔案。
    • CreateNew: 它向作業系統指定它應該建立一個新的檔案。
    • Open:它開啟一個現有檔案。
    • OpenOrCreate:它向作業系統指定它應該開啟一個檔案(如果存在),否則應該建立一個新的檔案。
    • Truncate:它開啟一個現有檔案,並將其大小截斷為零位元組。
  • FileAccess - FileAccess列舉器有成員:ReadReadWriteWrite

  • FileShare - FileShare列舉器具有以下成員:
    • Inheritable:它允許檔案控制代碼將繼承傳遞給子進程。
    • None:它會拒絕當前檔案的共用
    • Read:它允許開啟檔案進行讀取
    • ReadWrite:它允許開啟檔案進行閱讀和寫入
    • Write:它允許開啟檔案進行寫入

範例

以下程式演示了如何使用FileStream類:

using System;
using System.IO;

namespace FileIOApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
         for (int i = 1; i <= 20; i++)
         {
            F.WriteByte((byte)i);
         }

         F.Position = 0;
         for (int i = 0; i <= 20; i++)
         {
            Console.Write(F.ReadByte() + " ");
         }
         F.Close();
         Console.ReadKey();
      }
   }
}

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

C# 中的高階檔案操作

前面的例子提供了 C# 中的簡單檔案操作。要利用 C# 中的System.IO類的強大功能,需要知道這些類常用的屬性和方法。

System.IO類中一此最常用的方法和範例如下所列 -