文件是存儲在具有特定名稱和目錄路徑的磁盤中的數(shù)據(jù)的集合。當(dāng)文件打開以進(jìn)行讀取或?qū)懭霑r,它將成為流。
流基本上是通過通信路徑的字節(jié)序列。有兩個主要流:輸入流和輸出流。輸入流用于從文件讀取數(shù)據(jù)(讀取操作),輸出流用于寫入文件(寫入操作)。
System.IO命名空間具有各種類,用于執(zhí)行許多文件操作,例如:創(chuàng)建和刪除文件,從文件讀取或?qū)懭胛募?,關(guān)閉文件等。
下表顯示了System.IO命名空間中的一些常用的非抽象類:
| I/O類 | 描述 |
|---|---|
| BinaryReader | 從二進(jìn)制流中讀取原始數(shù)據(jù)。 |
| BinaryWriter | 以二進(jìn)制格式寫入原始數(shù)據(jù)。 |
| BufferedStream | 一個字節(jié)流的臨時存儲。 |
| Directory | 有助于操縱目錄結(jié)構(gòu)。 |
| DirectoryInfo | 用于對目錄執(zhí)行操作 |
| DriveInfo | 提供驅(qū)動器的信息。 |
| File | 用于幫助操縱文件。 |
| FileInfo | 用于對文件執(zhí)行操作。 |
| FileStream | 用于讀取和寫入文件中的任何位置。 |
| MemoryStream | 用于隨機(jī)訪問存儲在內(nèi)存中的流式數(shù)據(jù)。 |
| Path | 執(zhí)行路徑信息的操作。 |
| StreamReader | 用于從字節(jié)流讀取字符。 |
| StreamWriter | 用于將字符寫入到流中。 |
| StringReader | 用于從字符串緩沖區(qū)讀取。 |
| StringWriter | 用于寫入字符串緩沖區(qū)。 |
System.IO命名空間中的FileStream類有助于讀取,寫入和關(guān)閉文件。這個類派生自抽象類Stream。
需要創(chuàng)建一個FileStream對象來創(chuàng)建一個新文件或打開現(xiàn)有文件。創(chuàng)建FileStream對象的語法如下:
FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);
例如,創(chuàng)建一個FileStream對象F來讀取一個名稱為sample.txt的文件,如下所示:
FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
FileMode - FileMode枚舉器定義打開文件的各種方法。FileMode枚舉器的成員有:
Append:它打開一個現(xiàn)有的文件,并將光標(biāo)放在文件的最后,或者如果該文件不存在則創(chuàng)建此文件。Create:它創(chuàng)建一個新文件。CreateNew: 它向操作系統(tǒng)指定它應(yīng)該創(chuàng)建一個新的文件。Open:它打開一個現(xiàn)有文件。OpenOrCreate:它向操作系統(tǒng)指定它應(yīng)該打開一個文件(如果存在),否則應(yīng)該創(chuàng)建一個新的文件。Truncate:它打開一個現(xiàn)有文件,并將其大小截?cái)酁榱阕止?jié)。FileAccess - FileAccess枚舉器有成員:Read,ReadWrite和Write。
FileShare枚舉器具有以下成員:Inheritable:它允許文件句柄將繼承傳遞給子進(jìn)程。None:它會拒絕當(dāng)前文件的共享Read:它允許打開文件進(jìn)行讀取ReadWrite:它允許打開文件進(jìn)行閱讀和寫入Write:它允許打開文件進(jìn)行寫入以下程序演示了如何使用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();
}
}
}
當(dāng)上述代碼被編譯并執(zhí)行時,它產(chǎn)生以下結(jié)果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1
前面的例子提供了 C# 中的簡單文件操作。要利用 C# 中的System.IO類的強(qiáng)大功能,需要知道這些類常用的屬性和方法。
System.IO類中一此最常用的方法和示例如下所列 -
讀取和寫入文本文件 - 它涉及到閱讀和寫入文本文件。StreamReader和StreamWriter類有助于完成它。
讀取和寫入二進(jìn)制文件 - 它涉及從二進(jìn)制文件讀取和寫入。BinaryReader和BinaryWriter類有助于完成此操作。
操作Windows文件系統(tǒng) - 它為 C# 程序員提供瀏覽和查找Windows文件和目錄的能力。