system.io

System.IO,要操作IO,就需要,確定儲存媒介,打開,然後讀取或者寫入,那麼在.Net中這三步是如何的呢?還是老規矩上圖

附件: System.IO.jpg 

        1.打開:

              Directory和File,前者用來操作文件夾,後者操作文件,它們和FileSystemInfo的兩個子類的區別在於,他們是靜態類,對文件或文件夾的操作是弱類型的。而FileSystemInfo的兩個子類是實例類,它們是強類型的。

        2.儲存媒介:

              抽象Stream基類,提供了對儲存媒介的同步異步的訪問,他把數據流表示爲原始的字節流,他的三個子類提供了,基於文件的Filestream,基於內存的MenoryStream。這裏用到了GOF23中Decorator(裝飾),動態地給一個對象添加一些額外的職責。

附件: Decorator.jpg 
    


  • 在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責。
  • 處理那些可以撤消的職責。
  • 當不能採用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,爲支持每一種組合將產生大量的子類,使得子類數目呈爆炸性增長。另一種情況可能是因爲類定義被隱藏,或類定義不能用於生成子類。 
        上圖中的Component在.net裏就是Stream, ,COncreateDecorator:FileStream,MemoryStream,BufferedStream 進行裝飾,生成各具不同功能的對象,不同格式的流。          


        3.讀取或寫入:讀取(寫入)有三種方式,StreamReader(Writer):以字節流讀取(寫入),StringReader(Writer):以字符串流讀取(寫入),BinaryReader(Writer):以2進制流讀取(寫入)
  1.           FileStream fs = File.Open(@"C:/Users/kevin/Desktop/1.txt", FileMode.OpenOrCreate);//打開文件返回一個文件流
  2.             StreamReader sr = new StreamReader(fs);
  3.           string str = sr.ReadToEnd();//以字節讀取文件
  4.             StreamWriter sw = new StreamWriter(fs);
  5.           sw.Write("1234");//以字節寫文件
  6.             fs.Close();
  7.             /**/////或者使用下面的
  8.             BinaryWriter bw = new BinaryWriter(fs);
  9.           bw.Write("1234");//以二進制寫文件
  10.             fs.Close();
複製代碼
通過這三個層次的類,就可以完成IO的操作,簡單的就是用File打開一個文件,它會返回一個Stream,然後用相應的讀寫器去讀取或者寫入.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章