Intro
簡單介紹 dotNet System.IO相關的類別算是個整理, 但不做詳細介紹
以我的觀點將其分為 儲存(Storage) 和 串流(Stream)
主類 | 次類 | 父類 | 類別 | 描述 |
Storage
|
Drive | DriveInfo | 磁碟槽資訊 | |
Directory
|
Directory | static class可以取得目錄資訊 | ||
DirectoryInfo | 目錄資訊 | |||
File
|
File | static class可以取得檔案資訊 | ||
FileInfo | 檔案資訊 | |||
Utility | Path | 實用路徑相關函式 | ||
Stream
|
Byte
|
Stream
串流基底 |
BufferStream | 接收Stream, Byte的基本操作 |
FileStream | 接收檔案handle, Byte的基本操作 | |||
MemoryStream | 接收byte陣列, Byte的基本操作 | |||
BinaryReader | 接收Stream, 讀取Byte的進階操作 | |||
BinaryWriter | 接收Stream, 寫入Byte的進階操作 | |||
Text
|
TextReader
文字讀取基底 |
StringReader | 接收字串, 讀取文字的基本操作 | |
StreamReader | 接收Stream, 讀取文字的進階操作 | |||
TextWriter
文字寫入基底 |
StringWriter | 接收字串, 寫入文字的基本操作 | ||
StreamWriter | 接收Stream, 寫文字的進階操作 |
Context
光看上面這裡說明肯定沒啥幫助
下面稍作解釋
不過不講Storage, 都很直白
Stream要怎麼選其實很簡單
就看你的資料是什麼
.. 次分類的選用
如果是純Byte操作的話就選Byte
如果是文字操作就選文字(廢話XD)
它們最主要的差異在於Read時
Text操作的Read "可能" 會傳回 2-byte, 若它是以2個byte來儲存
所以你也可以在 new(建構時) 指定編碼格式
using (var ms = new System.IO.MemoryStream(Encoding.UTF8.GetBytes("Hello World! 感謝各位看倌蒞臨"))) using (var sr = new System.IO.StreamReader(ms)) { int c = 0; while ((c = sr.Read()) >= 0) Console.WriteLine("{0:x}", c); }B.T.W. dotNet 的 char 是2個byte, 可以用 sizeof(char)來確認
.. Byte 操作
1. BufferStream、FileStream、MemoryStream 的選用, 只要看你的輸入是什麼就選哪個
2. BinaryReader、BinaryWriter 是屬於 Stream 的較進階操作
也沒多進階,就多了一些function,ex. ReadInt32, ReadDouble
也就是把第1點的物件帶入第2點就可以了
using (var ms = new System.IO.MemoryStream(Encoding.UTF8.GetBytes("Hello World!!"))) { using (var sr = new System.IO.BinaryReader(ms)) { // TODO } }
.. 文字操作
StringReader 和 StreamReader 選用,端看你的輸入是 字串 還是 串流
沒有留言:
張貼留言