檔是存儲在具有特定名稱和目錄路徑的磁片中的數據的集合。當檔打開以進行讀取或寫入時,它將成為流。
流基本上是通過通信路徑的位元組序列。有兩個主要流:輸入流和輸出流。輸入流用於從檔讀取數據(讀取操作),輸出流用於寫入檔(寫入操作)。
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枚舉器有成員:Read,ReadWrite和Write。- 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類中一此最常用的方法和示例如下所列 -
讀取和寫入文本檔 - 它涉及到閱讀和寫入文本檔。
StreamReader和StreamWriter類有助於完成它。讀取和寫入二進位檔 - 它涉及從二進位檔讀取和寫入。
BinaryReader和BinaryWriter類有助於完成此操作。操作Windows檔系統 - 它為 C# 程式員提供流覽和查找Windows檔和目錄的能力。
