rt 结构定义如下:.
<Serializable>
Public Structure Person
Dim Name As String
Dim Age As Integer
Dim Income As Decimal
写入代码如下:
Dim BinFormatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Dim fs As New FileStream("c:\temp\text.txt", FileMode.Create)
Dim P As New Person
Dim Persons As New ArrayList
P = New Person
P.Name = "Person 1"
P.Age = 35
P.Income = 32000
Persons.Add(P)
P = New Person
P.Name = "Person 2"
P.Age = 50
P.Income = 72000
Persons.Add(P)
BinFormatter.Serialize(fs, Persons)
Dim abc As String = "testtest"
Persons.Add(abc)
BinFormatter.Serialize(fs, Persons)
读取代码如下:
Dim obj1 As Object
Dim Persons1 As New ArrayList
Do
obj1 = BinFormatter.Deserialize(fs)
If obj1.GetType Is GetType(ArrayList) Then
Persons1 = obj1
End If
Loop While fs.Position < fs.Length - 1
按理说第一次进行deserialize方法就应该将包含两个person结构与一个string的arraylist读取出来了啊,为什么实际运行时是首先读出包含两个person结构的arraylist,随后第二次读出的是包含两个person结构与一个string的arraylist,百思不得其解,求帮助~~
------解决思路----------------------
晕死
要么你统一add完之后再序列化
要么第一次序列化之后,add之前,先clear一下
你第一次先把Persons序列化了
然后没清空,又继续往里面放东西,
第二次把一个更大的Persons再次序列化,数据不就重复了