跳至內容

.NET 開發基金會/序列化

來自華夏公益教科書


序列化和輸入/輸出


序列化和輸入/輸出

[編輯 | 編輯原始碼]

考試目標:在 .NET Framework 應用程式中實現序列化和輸入/輸出功能

序列化

[編輯 | 編輯原始碼]

維基百科對序列化的定義是:“在資料儲存和傳輸的背景下,序列化是將物件儲存到儲存介質(如檔案或記憶體緩衝區)或透過網路連線連結以二進位制形式傳輸的過程”。

這裡解決的問題是,物件由正在執行的程序建立,因此與該程序例項的生命週期繫結。如果由於任何原因,並且可能有許多原因,您想在另一個程序例項的上下文中“傳輸”該物件,那麼您就遇到了一個問題,您透過在原始程序中“儲存”物件的 state 並在目標程序中“恢復”它來解決。這個“儲存”部分稱為序列化,而“恢復”部分稱為反序列化。

可序列化屬性

[編輯 | 編輯原始碼]

如果物件的類名字首為 [Serializable] 屬性,則該物件是可序列化的。

物件序列化

[編輯 | 編輯原始碼]

可以使用 BinaryFormatter 類 來序列化物件。要序列化,請使用 BinaryFormatter 的 Serialize() 方法,該方法接受一個流和一個可序列化物件作為引數。要反序列化,請使用 BinaryFormatter 的 Deserialize() 方法,該方法接受一個流作為引數,並返回一個可以轉換回原始物件型別的物件。請記住,在使用完流後,透過呼叫流的 Close() 方法來關閉流。

XML 序列化

[編輯 | 編輯原始碼]

可以使用 XmlSerializer 類 來序列化物件。要序列化,請使用 XmlSerializer 的 Serialize() 方法,該方法接受一個流和一個可序列化物件作為引數。要反序列化,請使用 XmlSerializer 的 Deserialize() 方法,該方法接受一個流作為引數,並返回一個可以轉換回原始物件型別的物件。請記住,在使用完流後,透過呼叫流的 Close() 方法來關閉流。

有關 XML 和 SOAP 序列化的概述,請參閱 MSDN

自定義序列化

[編輯 | 編輯原始碼]

ISerializable 介面允許物件控制其自身的序列化和反序列化。

讀取器

[編輯 | 編輯原始碼]

寫入器

[編輯 | 編輯原始碼]

格式化器

[編輯 | 編輯原始碼]

格式化器用於將物件序列化為流。

檔案 IO

[編輯 | 編輯原始碼]

管理位元組流

[編輯 | 編輯原始碼]

隔離儲存

[編輯 | 編輯原始碼]

有關隔離儲存任務的常規討論,請參閱 MSDN

類、介面和工具

[編輯 | 編輯原始碼]

序列化和反序列化

[編輯 | 編輯原始碼]

考試目標:使用執行時序列化技術序列化或反序列化物件或物件圖。

(參考 System.Runtime.Serialization 名稱空間)

序列化介面
[編輯 | 編輯原始碼]

IDeserializationCallback 介面 - MSDN

IFormatter 介面和 IFormatterConverter 介面

IFormatter 介面 - MSDN
IFormatterConverter 介面 - MSDN

ISerializable 介面 - MSDN

序列化屬性
[編輯 | 編輯原始碼]
例如,有關一些序列化屬性,請參閱 MSDN

OnDeserializedAttribute 類和 OnDeserializingAttribute 類

OnDeserializedAttribute 類 - MSDN
OnDeserializingAttribute 類 - MSDN

OnSerializedAttribute 類和 OnSerializingAttribute 類

OnSerializedAttribute 類 - MSDN
OnSerializingAttribute 類 - MSDN

OptionalFieldAttribute 類 - MSDN

SerializationEntry 結構和 SerializationInfo 類
[編輯 | 編輯原始碼]

SerializationEntry 結構 - MSDN

SerializationInfo 類 - MSDN

ObjectManager 類
[編輯 | 編輯原始碼]

ObjectManager 類 - MSDN

Formatter 類、FormatterConverter 類和 FormatterServices 類
[編輯 | 編輯原始碼]

Formatter 類 - MSDN

FormatterConverter 類 - MSDN

FormatterServices 類 - MSDN

StreamingContext 結構
[編輯 | 編輯原始碼]

StreamingContext 結構 - MSDN

XML 序列化

[編輯 | 編輯原始碼]

考試目標:使用 System.Xml.Serialization 名稱空間控制物件序列化為 XML 格式。

XmlSerializer 類 - MSDN

考試目標:使用 XmlSerializer 類將物件序列化和反序列化為 XML 格式。

使用序列化屬性控制序列化 - MSDN

有關控制序列化的屬性列表,請參閱 MSDN

實現 XML 序列化介面以提供 XML 序列化的自定義格式 - MSDN

System.Xml.Serialization 名稱空間提供委託和事件處理程式 - MSDN

自定義序列化

[編輯 | 編輯原始碼]

考試目標:使用序列化格式化程式類實現自定義序列化格式。

SoapFormatter 類 - MSDN

(參閱 System.Runtime.Serialization.Formatters.Soap 名稱空間)

BinaryFormatter 類 - MSDN

(參閱 System.Runtime.Serialization.Formatters.Binary 名稱空間

檔案系統類

[編輯 | 編輯原始碼]

考試目標:使用檔案系統類訪問檔案和資料夾。

(參閱 System.IO 名稱空間)

File 類和 FileInfo 類

有關常見的 IO 任務,請參閱 MSDN
File 類 - MSDN
FileInfo 類 - MSDN

Directory 類和 DirectoryInfo 類

Directory 類 - MSDN
DirectoryInfo 類 - MSDN

DriveInfo 類和 DriveType 列舉

DriveInfo 類 - MSDN
DriveType 列舉 - MSDN

FileSystemInfo 類和 FileSystemWatcher 類

FileSystemInfo 類
FileSystemWatcher 類
FileSystemWatcher 類旨在檢測檔案系統中的更改。
它可以使用 Filter 和 Path 屬性進行引數化。
  Example: 
  FileSystemWatcher w = new FileSystemWatcher();
  w.Filter = "*.txt";
  w.Path = @"C:\Windows";
Filter 屬性僅用於檢查檔名的模式。因此,不要在那裡使用目錄路徑。
您可以新增諸如 WaitForChanged(..) 之類的方法來監視指定區域的更改。

Path 類 - MSDN

System.IO.Path 類具有許多用於建立和解析資源路徑的有用的靜態方法

ErrorEventArgs 類和 ErrorEventHandler 委託

ErrorEventArgs 類 - MSDN
ErrorEventHandler 委託 - MSDN

RenamedEventArgs 類和 RenamedEventHandler 委託

RenamedEventArgs 類 - MSDN
RenamedEventHandler 委託 - MSDN

位元組流

[編輯 | 編輯原始碼]

考試目標:使用 Stream 類管理位元組流。

(參閱 System.IO 名稱空間)

FileStream 類 - MSDN

Stream 類 - MSDN

System.IO.Stream 是所有其他流繼承的抽象基類。不可能例項化 Stream 類。而是使用從 Stream 派生的其他類之一。
就 70-536 考試目標而言,從 Stream 派生的最重要的類是
  • System.IO.FileStream
  • System.IO.MemoryStream
  • System.IO.Compression.DeflateStream
  • System.IO.Compression.GZipStream
  • System.Security.Cryptography.CryptoStream
  • System.IO.BufferedStream
有關從 Stream 派生的類的完整列表,請參閱 MSDN
有關檔案和流 IO 的討論,請參閱 MSDN

MemoryStream 類 - MSDN

BufferedStream 類 - MSDN

Reader 和 Writer 類

[編輯 | 編輯原始碼]

考試目標:使用 Reader 和 Writer 類管理 .NET Framework 應用程式資料。

(參閱 System.IO 名稱空間)

StringReader 類和 StringWriter 類 - MSDNMSDN

StringReader 和 StringWriter 繼承自 TextReader/TextWriter。
  • StringReader 是用於字串的 TextReader。
  • StringWriter 是用於字串的 TextWriter。

TextReader 類和 TextWriter 類

TextReader 類 - MSDN
TextReader 和 TextWriter 是抽象基類,StreamReader、StreamWriter、StringReader 和 StringWriter 繼承自它們。StreamReader 和 StringReader 繼承自 TextReader。StreamWriter 和 StringWriter 繼承自 TextWriter。
TextWriter 類 - MSDN

StreamReader 類和 StreamWriter 類 - MSDNMSDN

StreamReader 和 StreamWriter 類提供用於讀取和寫入基於字元的流的基本功能(ReadLine()、WriteLine()、ReadToEnd())。
StreamReader 和 StreamWriter 繼承自抽象類 TextReader 和 TextWriter。
  • StreamReader 是流的 TextReader。
  • StreamWriter 是流的 TextWriter。
StreamReader 的 Peek 和 Read 方法
  • Peek 方法獲取特定位置的字元,但不移動。
  • Read 方法獲取特定位置的字元並移動。

BinaryReader 類和 BinaryWriter 類

BinaryReader 類 - MSDN
BinaryWriter 類 - MSDN

壓縮和隔離儲存

[編輯 | 編輯原始碼]

考試目標:在 .NET Framework 應用程式中壓縮或解壓縮流資訊,並使用隔離儲存提高應用程式資料的安全性。

(參考 System.IO.Compression 名稱空間)

(參考 System.IO.IsolatedStorage 名稱空間)

IsolatedStorageFile 類 - MSDN

IsolatedStorageFileStream 類 - MSDN

DeflateStream 類 - MSDN

GZipStream 類 - MSDN


上一頁 / 下一頁

華夏公益教科書