2007-12-13

Serialize & Deserialize Class To File

This sample show serialize and deserialize by use binary format.

1. Import this 2 names space

Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO

2. The class or object that you want implement must insert attribute Serializable.

< system.serializable() >
Public Class Person
Private m_sFirstName As String
Private m_sLastName As String

Public Sub New()
End Sub

Public Property FirstName() As String
Get
Return Me.m_sFirstName
End Get
Set(ByVal value As String)
Me.m_sFirstName = value
End Set
End Property

Public Property LastName() As String
Get
Return Me.m_sLastName
End Get
Set(ByVal value As String)
Me.m_sLastName = value
End Set
End Property

Public ReadOnly Property FullName() As String
Get
Return Me.m_sFirstName & " " & Me.m_sLastName
End Get
End Property

End Class


3. Sample code show how to do this.

' Create object instance
Dim pPerson As New Person()

pPerson.FirstName = "TOM"
pPerson.LastName = "BROWN"

' Create file by FileStream class
Dim fs As FileStream = New FileStream("c:\test.bin", FileMode.OpenOrCreate)

' Creat binary object
Dim bf As New BinaryFormatter()

' Serialize object to file
bf.Serialize(fs, pPerson)
fs.Close()

' Open file and deserialize to object again
Dim fsRead As New FileStream("C:\test.bin", FileMode.Open)
Dim objTest As Object = bf.Deserialize(fsRead)
fsRead.Close()

4 comments:

Anonymous said...

Awesome just what I needed.

Corbin said...

Put all Objects in a Hashtable and then dump it

Anonymous said...

Awesome just what I needed. Thanks

I have create an list(of PCs) and saved in a file as you explained in this tuto but when I try to read it and stoked in an object it doesn't work!!

Public PCsList As New List(Of PCs)
.
.
.
If FileIO.FileSystem.FileExists(FileSrc) Then
Dim fsRead As New FileStream(FileSrc, FileMode.Create)
PCsList = bf.Deserialize(fsRead)
fsRead.Close()
RefreshList()
End If

Anonymous said...

sorry i have made a mistake filemode.open

If FileIO.FileSystem.FileExists(FileSrc) Then
Dim fsRead As New FileStream(FileSrc, FileMode.open)
PCsList = bf.Deserialize(fsRead) ' Position of the error <<<<<<<<<<<<<<<<
fsRead.Close()
RefreshList()
End If

note: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.