实例说明@H_404_1@
在本实例中,我们将利用VB.NET向大家展示一个串行化数据的实例。程序运行结果如图55-1所示。@H_404_1@
图55-1 运行结果@H_404_1@
技术要点@H_404_1@
l 串行化的概念@H_404_1@
l 进行读写操作@H_404_1@
实现过程@H_404_1@
■ 新建项目@H_404_1@
打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中选择"类库",在名称域中输入"SerializeTest",然后选择保存路径。单击"确认"。@H_404_1@
Imports System@H_404_1@
Imports System.IO@H_404_1@
Imports System.Collections@H_404_1@
Imports System.Runtime.Serialization@H_404_1@
Imports System.Runtime.Serialization.Formatters.Binary@H_404_1@
Namespace ClassLibrary1@H_404_1@
Public Class SerializeTest@H_404_1@
Public Shared Sub Main()@H_404_1@
Console.WriteLine("Create object graph")@H_404_1@
Dim l As New ArrayList@H_404_1@
Dim x As Integer@H_404_1@
For x = 0 To 9@H_404_1@
Console.WriteLine(x)@H_404_1@
l.Add(x)@H_404_1@
Next x@H_404_1@
Console.Write("Serializing object graph to disk..")@H_404_1@
Dim s As Stream = File.Open("foo.bin",FileMode.Create,FileAccess.ReadWrite)@H_404_1@
Dim b As BinaryFormatter = New BinaryFormatter@H_404_1@
b.Serialize(s,l)@H_404_1@
s.Close()@H_404_1@
Console.WriteLine("Complete.")@H_404_1@
Console.Write("Deserializing object graph from disk..")@H_404_1@
Dim r As Stream = File.Open("foo.bin",FileMode.Open,FileAccess.Read)@H_404_1@
Dim c As New BinaryFormatter@H_404_1@
Dim p As ArrayList = CType(c.Deserialize(r),ArrayList)@H_404_1@
Console.WriteLine("Complete.")@H_404_1@
Dim i As Object@H_404_1@
For Each i In p@H_404_1@
Console.WriteLine(i)@H_404_1@
Next i@H_404_1@
r.Close()@H_404_1@
Console.WriteLine(Microsoft.VisualBasic.ControlChars.CrLf & "Press Return to exit.")@H_404_1@
Console.Read()@H_404_1@
End Sub@H_404_1@
End Class@H_404_1@
End Namespace@H_404_1@
■ 运行程序@H_404_1@
单击菜单"调试|启动"或单击 图标运行程序。@H_404_1@
小结@H_404_1@
串行化是把图式对象转换成为线性字节串行的过程。字节序列可以发送到别处,例如远程计算机,然后执行序列解码,这样就在远程主机内存中生成了原来图式对象的克隆。串行化过程在VB.NET中是十分容易使用的,而且是开放的,每个VB6的程序员都曾经自觉或不自觉地使用过串行化。当任何ActiveX dll或者ActiveX exe被创建后,都有五个属性可以设置,最后一个Persistable属性就是VB6中的串行化。VB6中串行化的过程不需要用户认知,大部分开发人员也从来不管串行化做了什么和如何运作。在VB.NET中,有着公共对象库,每个支持.NET体系的语言都可以通过System.Runtime.Serialization的名字空间来理解和使用VB.NET的串行化特征。@H_404_1@
串行化可以替代任何流,象MemoryStream,NetStream等,而不仅仅是FileStream@H_404_1@ 原文链接:https://www.f2er.com/vb/264331.html