文件是存儲在磁盤具有特定名稱和目錄路徑的數(shù)據(jù)的集合。當(dāng)一個文件被打開閱讀或書寫時,就變成了流。
流基本上是通過通信路徑中的字節(jié)順序。主要有兩個流:輸入流和輸出流。輸入流用于從文件系統(tǒng)中讀取數(shù)據(jù),輸出流用于向文件中寫數(shù)據(jù)。
System.IO 的命名空間有多種類,這些類被用于執(zhí)行大量和文件有關(guān)的操作,例如創(chuàng)建和刪除文件,讀寫文件,關(guān)閉文件等等。
下面的表格中列出了一些 System.IO 命名空間中常用的非抽象類:
I/O 類 | 描述 |
---|---|
BinaryReader | 從二進制流讀取原始數(shù)據(jù) |
BinaryWriter | 以二進制形式寫入原始數(shù)據(jù) |
BufferedStream | 字節(jié)流的臨時存儲 |
Directory | 用于操作目錄結(jié)構(gòu) |
DirectoryInfo | 用于創(chuàng)建復(fù)合條件指令。 |
DriveInfo | 用于執(zhí)行目錄操作 |
File | 用于操作文件 |
FileInfo | 用于執(zhí)行文件操作 |
FileStream | 用于讀寫文件中任意位置的內(nèi)容 |
MemoryStream | 用于隨機存取存儲器中存儲的流數(shù)據(jù) |
Path | 用于執(zhí)行有關(guān)路徑信息的操作 |
StreamReader | 用于從字節(jié)流中讀取字符 |
StreamWriter | 用于向流中寫字符 |
StringReader | 用于讀取字符串?dāng)?shù)組 |
StringWriter | 用于寫入字符串?dāng)?shù)組 |
System.IO 命名空間中的 FileStream 類有助于讀取,寫入和關(guān)閉文件。這個類派生自抽象類流。
你需要創(chuàng)建一個 FileStream 對象用于創(chuàng)建一個新的文件或打開一個已存在的文件。創(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);
參數(shù) | 描述 |
---|---|
FileMode | fileMode 枚舉定義了各種方法來打開文件。fileMode 枚舉的成員是: Append: 打開一個已有的文件,并將光標(biāo)放置在文件的末尾。如果文件不存在,則創(chuàng)建文件。 Create: 它創(chuàng)建一個新的文件 CreateNew: 指定操作系統(tǒng)應(yīng)創(chuàng)建一個新的文件。如果文件已存在,則拋出異常。 Open: 它會打開一個現(xiàn)有的文件 OpenOrCreate: 指定操作系統(tǒng)應(yīng)打開一個已有的文件。如果文件不存在,則用指定的名稱創(chuàng)建一個新的文件打開。 Truncate: 打開一個已有的文件,文件一旦打開,就將被截斷為零字節(jié)大小。 |
FileAccess | FileAccess 枚舉成員有:Read,ReadWrite 和 Write。 |
FileShare | FileShare 枚舉有以下成員: Inheritable: 允許文件句柄可由子進程繼承。 None: 它拒絕共享當(dāng)前文件 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();
}
}
}
編譯執(zhí)行上述代碼,得到如下結(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 類的強大功能,您需要知道這些類常用的屬性和方法。
主題和描述 |
---|
文本文件的讀寫 它涉及到文本文件的讀寫。StreamReader 和 StreamWriter 類有助于完成文本文件的讀寫。 |
二進制文件的讀寫 它涉及到二進制文件的讀寫。BinaryReader 和 BinaryWriter 類有助于完成二進制文件的讀寫。 |
Windows文件系統(tǒng)的操作 它讓 C# 程序員能夠瀏覽并定位 Windows 文件和目錄。 |