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

.NET I/O 類型體系完整圖譜:從 Stream 到專用流的選型指南

     編輯:關於C#

System.IO 提供了龐大而精密的類型體系,理解各類別的定位與適用場景,是高效開發的關鍵。

核心抽象:Stream

Stream 是所有流的抽象基類,封裝三大基本操作:

  • Read:從流讀取位元組到陣列
  • Write:將陣列位元組寫入流
  • Seek:在流中定位(需 CanSeek=true)

三大能力屬性 CanRead、CanWrite、CanSeek 讓消費端能動態檢測流特性(如 NetworkStream 不支援 Seek)。

二進位讀寫專家

  • BinaryReader / BinaryWriter:提供 ReadInt32、WriteDouble、ReadString 等強型別方法,適合結構化二進位資料(如自訂檔案格式、網路協定封包)。

檔案與目錄管理入口

  • File、Directory:密封類別,提供靜態工廠方法(File.OpenText、File.Create 等)快速產生 FileStream、StreamReader 等實例,亦支援屬性查詢、複製、移動、刪除等管理操作。基類均為 FileSystemEntry。

文字處理流體系

類別定位典型用途
TextReader/Writer抽象基類定義 Unicode 字元讀寫契約
StreamReader/Writer流適配器讀寫文字檔(支援 Encoding 偵測與 BOM)
StringReader/Writer記憶體字串單元測試、字串模板處理、日誌緩衝

特殊用途流

  • BufferedStream:為無緩衝流(如 NetworkStream)加裝緩衝區,減少系統呼叫。FileStream 內建緩衝,MemoryStream 無需緩衝。
  • MemoryStream:純記憶體流,零磁碟 I/O,極適合高速暫存、序列化中介、進程間資料傳遞(配合 GetBuffer/ToArray)。
  • NetworkStream:Socket 底層流,支援非同步收發,不支援 Seek。

檔案流深度解析

FileStream 是磁碟檔案的直接代表,支援:

  • 隨機存取:Seek(offset, SeekOrigin)
  • 標準輸入/輸出/錯誤流包裝
  • 同步/非同步雙模式(建構子 useAsync 參數控制)
  • 共享模式精細控制:FileShare.Read/Write/Delete/None

選型決策樹

  1. 需處理文字?→ StreamReader/Writer(指定 Encoding)
  2. 需序列化基元類型?→ BinaryReader/Writer
  3. 需高速記憶體暫存?→ MemoryStream
  4. 需網路傳輸?→ NetworkStream 或更高層 HttpClient/gRPC
  5. 需對無緩衝流加速?→ 包裝 BufferedStream
  6. 單純管理檔案屬性/結構?→ 靜態 File/Directory 方法

安全性邊界

所有 I/O 操作均受作業系統 ACL 控制。網路檔案直接存取預設被沙箱策略阻擋,請改用 IsolatedStorage 實現跨域資料隔離儲存。

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