瞭解下C# 檔案的輸入與輸出

roc_guo發表於2022-06-02

瞭解下C# 檔案的輸入與輸出瞭解下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

FileMode 列舉定義了各種開啟檔案的方法。FileMode 列舉的成員有:

  • Append:開啟一個已有的檔案,並將游標放置在檔案的末尾。如果檔案不存在,則建立檔案。
  • Create:建立一個新的檔案。如果檔案已存在,則刪除舊檔案,然後建立新檔案。
  • CreateNew:指定作業系統應建立一個新的檔案。如果檔案已存在,則丟擲異常。
  • Open:開啟一個已有的檔案。如果檔案不存在,則丟擲異常。
  • OpenOrCreate:指定作業系統應開啟一個已有的檔案。如果檔案不存在,則用指定的名稱建立一個新的檔案開啟。
  • Truncate:開啟一個已有的檔案,檔案一旦開啟,就將被截斷為零位元組大小。然後我們可以向檔案寫入全新的資料,但是保留檔案的初始建立日期。如果檔案不存在,則丟擲異常。
FileAccess

FileAccess 列舉的成員有: ReadReadWrite 和  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 類有助於完成二進位制檔案的讀寫。
它讓 C# 程式設計師能夠瀏覽並定位 Windows 檔案和目錄。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2898563/,如需轉載,請註明出處,否則將追究法律責任。

相關文章