2015年1月20日 星期二

VS 2012 C# Dispose、Close、Flush區分 -- 20150120


補充一:

Dispose( )、Close( )、Flush( )之間的區分:


  • Dispose( )清除連接,之後不可使用conn.Open( ),如需要使用conn.Open( )的話,必須重新建立資料庫連線。

舉例:
 string connString= WebConfigurationManager.ConnectionStrings["資料庫名稱"].ConnectionString;  
 SqlConnection conn = new SqlConnection(connString);     //建立資料庫連線

  • Close( )暫時關閉,之後還是可以直接使用conn.Open( ),不需要再連接資料庫一次。
  • Flush( )將所有的資訊「從基礎緩衝區移動到目標區」或「清除緩衝區」,或者同時進行前述兩種。簡單講:清除資料流的緩衝區,使得資料都寫入文件或系統中。
----------------------------------------------------------------------

補充二:

在NET中常用的資料流(Stream)有:BufferedStream(改善讀取和寫入作業效能)、FileStream(用於讀取和寫入檔案)、MemoryStream(用於讀取和寫入作為備份存放區的記憶體)、NetworkStream(用於透過網路通訊讀取和寫入)......(※屬於System.IO和System.Net命名空間),其涉及三個基本操作:

  • 讀取:從資料流將資料傳送到資料結構。如:位元組陣列
  • 寫入:從資料來源將資料傳送至資料流。
  • 查詢:查詢和修改資料流內的目標位置。

讀取器與寫入器:會處理編碼字元和位元組之間的轉換,讓資料流能夠完成作業,常用的有:

  • BinayReader和BinayWriter:用於將基本資料類型當做二進位值讀取和寫入。
  • StreamReader和StreamWriter:使用編碼值在字元與位元組之間進行轉換的方式讀取和寫入字元。
  • StringReader和StringWriter:從字串讀取字元以及將字元寫入字串。
  • TextReader和TextWriter:作為其他讀取和寫入二進位資料之外的字元與字串之讀取器和寫入器的抽象基底類別。



文件讀寫:

透過FileStream類別中,所提供的WriteRead方法可對文件進行讀、寫操作。而實際上Write方法只是把資料寫入的緩衝區中,然後在一次性寫入到文件中,來提高寫入的效率和速度。關於FileStream提供了一個緩衝區寫入文件方式,就是Flush方法。(※緩衝區是為了提高I/O效能而設置的)

※WriteLine( ):將目前的位元組寫入標準輸出Stream(資料流);使用WirteLine( )方法時會自動換行。


---------------------------------------------------------------------------------

補充三:(2015/1/29)

StreamWriter:是為位元組輸入和輸出所設計,將一連串的「位元組」寫入目前的Stream(資料流),並由這資料流中目前的位置前移寫入的位元組數目。

※StreamWriter預設為使用UTF8Encoding的執行個體。









參考網址:
http://msdn.microsoft.com/zh-tw/library/system.io.stream.flush(v=vs.110).aspx
http://www.360doc.com/content/12/0425/16/9290626_206459132.shtml
http://blog.csdn.net/sunnykaho/article/details/4459330
https://msdn.microsoft.com/zh-tw/library/k3352a4t(v=vs.110).aspx

沒有留言:

張貼留言