.NET的IO類別繼承架構概觀

NET提供用來處理I/O作業的類別,依功能大致上可以歸納為兩大類:

  • 專門用以操作檔案目錄
  • 用以處理各種型式資料的存取作業

處理檔案目錄的類別中又可以分為兩大類,一類是衍生自Object的Directory、File以及Path類別,具備通用於一般檔案目錄的處理功能,而另一大類則是由FileSystemInfo類別所衍生的兩個子類別FileInfo以及DirectoryInfo等,這兩個類特別適於處理特定的檔案目錄。

除了處理檔案目錄的類別,其他的類別均是使用於資料內容的讀寫作業,其中最重要且最基礎者為Stream類別,這個類別為所有資料流類別的基礎類別,底下衍生的五個子類別,BufferedStream、FileStream、MemoryStream、NetworkStream以及CryptoStream等,專門用以處理各種資料來源的I/O作業,從類別的名稱可以很輕易的了解其中的差異,下表簡要的列出這幾個子類別所能處理的資料來源。

  • BufferedStream:以記憶體緩衝區為資料來源,進行資料的存取作業。
  • FileStream:以檔案內容為資料來源,進行資料的存取作業。
  • MemoryStream:以記憶體為資料存取的來源,進行資料的存取作業。
  • NetworkStream:以連結網路為資料來源,進行資料的存取作業。
  • CryptoStream 支援資料的加密解密作業。

資料流類別以及其底下衍生的子類別,提供了資料I/O作業所需的功能,這些功能甚至允許我們對於資料進行加密解密的輸出與輸入操作,並且適用於各種不同的資料來源。

除了檔案目錄系統以及資料流,另外還有兩組很重要的類別,這兩組類別的主要功能在於存取不同格式的資料;資料的存取主要以三種內容格式來進行,二進位格式、位元組格式以及文字資料格式等,上述的資料流類別主要處理位元組格式的資料,二進位格式的資料存取作業則由BinaryReader以及BinaryWriter這兩個類別來進行,另外一組類別TextReader以及TextWriter則專門處理文字格式資料,底下的表格根據所處理的資料格式,列舉相關的類別:

  • 位元組 : Stream以及其衍生的子類別。
  • 二進位格式:BinaryReader以及BinaryWriter
  • 文字格式 : TextReader、TextWriter以及這個類別底下衍生的子類別。

表中的各種類別分別根據不同格式資料的存取操作,設計其所需的功能,這些類別雖然獨立存在,但是相互之間卻必須共同合作才能完成真正的資料讀寫操作,其中一種最重要的機制,便是資料流串接,原始資料因此得以不同格式的方式進行讀寫,卻不會干擾原始類別實體其資料儲存內容與存取過程。

沒有留言: