網頁

2015年12月6日 星期日

dotNet System.IO 簡述

Last Update: 2015/12/06 17:43+08



Intro

簡單介紹 dotNet System.IO相關的類別
算是個整理, 但不做詳細介紹
以我的觀點將其分為 儲存(Storage) 和 串流(Stream)

主類次類父類類別描述
Storage
Drive DriveInfo 磁碟槽資訊
Directory
Directory static class可以取得目錄資訊
DirectoryInfo目錄資訊
File
File static class可以取得檔案資訊
FileInfo檔案資訊
UtilityPath實用路徑相關函式
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 選用,端看你的輸入是 字串 還是 串流

沒有留言:

張貼留言