System.IO,要操作IO,就需要,確定儲存媒介,打開,然後讀取或者寫入,那麼在.Net中這三步是如何的呢?還是老規矩上圖
附件: System.IO.jpg
1.打開:
Directory和File,前者用來操作文件夾,後者操作文件,它們和FileSystemInfo的兩個子類的區別在於,他們是靜態類,對文件或文件夾的操作是弱類型的。而FileSystemInfo的兩個子類是實例類,它們是強類型的。
2.儲存媒介:
抽象Stream基類,提供了對儲存媒介的同步或異步的訪問,他把數據流表示爲原始的字節流,他的三個子類提供了,基於文件的Filestream,基於內存的MenoryStream。這裏用到了GOF23中Decorator(裝飾),動態地給一個對象添加一些額外的職責。
附件: Decorator.jpg
- 在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責。
- 處理那些可以撤消的職責。
- 當不能採用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,爲支持每一種組合將產生大量的子類,使得子類數目呈爆炸性增長。另一種情況可能是因爲類定義被隱藏,或類定義不能用於生成子類。
3.讀取或寫入:讀取(寫入)有三種方式,StreamReader(Writer):以字節流讀取(寫入),StringReader(Writer):以字符串流讀取(寫入),BinaryReader(Writer):以2進制流讀取(寫入)
- FileStream fs = File.Open(@"C:/Users/kevin/Desktop/1.txt", FileMode.OpenOrCreate);//打開文件返回一個文件流
- StreamReader sr = new StreamReader(fs);
- string str = sr.ReadToEnd();//以字節讀取文件
- StreamWriter sw = new StreamWriter(fs);
- sw.Write("1234");//以字節寫文件
- fs.Close();
- /**/////或者使用下面的
- BinaryWriter bw = new BinaryWriter(fs);
- bw.Write("1234");//以二進制寫文件
- fs.Close();