首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# FileStream 進階模式與串流架構完整解析:FileMode、FileAccess、FileShare 與 Stream 繼承體系

     編輯:關於C語言

一、File.Open 靜態工廠方法:快速建立 FileStream


// 1. 唯讀開啟現有檔案
FileStream fs1 = File.Open(@"C:\test.txt", FileMode.Open);

// 2. 附加模式,唯寫
FileStream fs2 = File.Open(@"C:\test.txt", FileMode.Append, FileAccess.Write);

// 3. 截斷模式,讀寫共享讀取
FileStream fs3 = File.Open(@"C:\test.txt", FileMode.Truncate, FileAccess.ReadWrite, FileShare.Read);

// 4. 建立新檔(覆寫既有)
FileStream fs4 = new FileStream(@"C:\Testing.txt", FileMode.Create);

二、FileMode 完整語意對照表

值行為描述檔案不存在檔案存在
CreateNew建立新檔,嚴格禁止覆寫建立擲 IOException
Create建立或覆寫建立截斷為 0
Open開啟現有檔案擲 FileNotFoundException開啟
OpenOrCreate開啟或建立建立開啟
Truncate開啟並清空內容擲例外截斷為 0
Append開啟並移至末尾建立移至末尾

三、FileAccess 權限與 FileShare 共享模式

FileAccess

值允許操作
Read讀取
Write寫入
ReadWrite讀寫

FileShare(控制其他程序同時存取)

值允許其他程序
None獨佔,拒絕所有共享
Read允許讀取
Write允許寫入
ReadWrite允許讀寫
Delete允許刪除
Inheritable允許子程序繼承控制代碼

// 典型:讀寫自己,允許他人讀取
FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);

四、Stream 抽象基類核心契約

方法/屬性簽名說明
Readint Read(byte[] buffer, int offset, int count)讀取位元組到緩衝區,回傳實際讀取數
ReadByteint ReadByte()讀取單一位元組,結尾回傳 -1
Writevoid Write(byte[] buffer, int offset, int count)從緩衝區寫入位元組
WriteBytevoid WriteByte(byte value)寫入單一位元組
Seeklong Seek(long offset, SeekOrigin origin)設定指標位置
Positionlong Position { get; set; }目前指標位置
Lengthlong Length { get; }串流長度
Flushvoid Flush()清除緩衝區
Closevoid Close()關閉串流(呼叫 Dispose)
CanReadbool CanRead { get; }是否支援讀取
CanWritebool CanWrite { get; }是否支援寫入
CanSeekbool CanSeek { get; }是否支援定位

五、Stream 繼承階層完整圖解

Stream繼承結構圖

  • Stream → 抽象基類
  • FileStream → 檔案
  • MemoryStream → 記憶體
  • BufferedStream → 緩衝裝飾器
  • NetworkStream → 網路
  • CryptoStream → 加密轉換
  • GZipStream/DeflateStream → 壓縮
  • PipeStream → 匿名/具名管道

六、實務選擇指南

  1. 文字檔:StreamReader/Writer(編碼處理)
  2. 二進位結構:BinaryReader/Writer 或 FileStream 直接操作
  3. 大檔案隨機存取:FileStream + Seek
  4. 記憶體高速暫存:MemoryStream
  5. 網路傳輸:NetworkStream 或 HttpClient
  6. 加密/壓縮:CryptoStream / GZipStream 套疊在基礎串流上

總結

FileMode 決定檔案開啟/建立/截斷語意,FileAccess 限制自身權限,FileShare 協調跨程序並發存取。Stream 抽象基類統一了所有 I/O 裝置的操作介面,透過裝飾器模式(BufferedStream、CryptoStream、GZipStream)實現功能組合。精通這三組列舉與串流架構,是處理高可靠度、高效能檔案 I/O 的前提。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved