C# 檔案的輸入與輸出
一個 檔案 是一個儲存在磁碟中帶有指定名稱和目錄路徑的資料集合。當打開檔案進行讀寫時,它變成一個 流。
從根本上來說,流是透過通訊路徑傳遞的位元組序列。有兩個主要的流:輸入流 和 輸出流。輸入流用於從檔案讀取資料(讀取操作),輸出流用於向檔案寫入資料(寫入操作)。
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 枚舉的成員有:
Append:開啟一個現有的文件,並將遊標放置在文件的末端。如果文件不存在,則建立文件。
Create:建立一個新的檔案。如果文件已存在,則刪除舊文件,然後建立新文件。
CreateNew:指定作業系統應建立一個新的檔案。如果檔案已存在,則拋出異常。
Open:開啟一個已有的檔案。如果檔案不存在,則拋出異常。
OpenOrCreate:指定作業系統應開啟一個已有的檔案。如果文件不存在,則用指定的名稱建立新的文件開啟。
Truncate:開啟一個已有的文件,文件一旦打開,就會被截斷為零位元組大小。然後我們可以向文件寫入全新的數據,但保留文件的初始建立日期。如果檔案不存在,則拋出異常。
FileAccess
FileAccess 枚舉的成員有:Read、ReadWrite 和 Write。
FileShare
FileShare 枚舉的成員有:
Inheritable:允許檔案句柄可由子程序繼承。 Win32 不直接支援此功能。
None:謝絕共享目前檔案。文件關閉前,打開該文件的任何請求(由此進程或另一個進程發出的請求)都會失敗。
Read:允許隨後開啟檔案讀取。如果未指定此標誌,則在檔案關閉前,任何開啟該檔案以進行讀取的請求(由此進程或另一進程發出的請求)都會失敗。但是,即使指定了此標誌,仍可能需要附加權限才能夠存取該檔案。
ReadWrite:允許隨後開啟檔案讀取或寫入。如果未指定此標誌,則在檔案關閉前,任何開啟該檔案以進行讀取或寫入的請求(由此進程或另一進程發出)都會失敗。但是,即使指定了此標誌,仍可能需要附加權限才能夠存取該檔案。
Write:允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。
Delete:允许随后删除文件。
实例
下面的程序演示了 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 类的强大功能,您需要知道这些类常用的属性和方法。
在下面的章节中,我们将讨论这些类和它们执行的操作。请单击链接详细了解各个部分的知识:
主题
描述
文本文件的读写 它涉及到文本文件的读写。StreamReader 和 StreamWriter 类有助于完成文本文件的读写。
二进制文件的读写 它涉及到二进制文件的读写。BinaryReader 和 BinaryWriter 类有助于完成二进制文件的读写。
Windows 文件系统的操作 它让 C# 程序员能够浏览并定位 Windows 文件和目录。
以上就是【c#教程】C# 文件的输入与输出的内容,更多相关内容请关注PHP中文网(www.php.cn)!