Kirjoittaja: tnb
Kirjoitettu: 27.09.2004 – 27.09.2004
Tagit: koodi näytille, vinkki
Olio voidaan tallentaa levylle sarjamuodossa ja lukea se sieltä Formatters.Binary.BinaryFormatter luokan avulla. Oheinen esimerkki näyttää how-to.
Imports System.IO
Imports System.Runtime.Serialization
Public Class Form1
Inherits System.Windows.Forms.Form
' tästä poistettu autom luotu koodi
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Luodaan objekti, joka halutaan tallentaa, dataksi arvo 1234
Dim omaOlio As New OmaLuokka(1234)
'Tehdään objekti, johon luetaan levyltä
Dim YleinenOlio As Object
'Tiedostonimi mihin talletetaan
Dim strFilename As String = "C:\koe.dat"
'Tallennuskäsky levylle
TalletaLevylle(omaOlio, strFilename)
'Ylikirjoitetaan sisäinen data, jotta levyltäluku näkyisi varmasti
omaOlio.SisäinenData = 11
'Luku levyltä
LueLevyltä(YleinenOlio, strFilename)
'Muutetaan levyltä luetun yleisen objektin tyyppi halutuksi
omaOlio = CType(YleinenOlio, OmaLuokka)
'Näytetään, että sisäinen data on tullut levyltä
TextBox1.Text = omaOlio.SisäinenData.ToString '1234
End Sub
Public Sub TalletaLevylle(ByVal omaObjekti As Object, ByVal sfile As String)
'objektin talletus levylle
Dim omaFormatter As New Formatters.Binary.BinaryFormatter
Dim fs As New FileStream(sfile, FileMode.Create)
omaFormatter.Serialize(fs, omaObjekti)
fs.Close()
End Sub
Public Sub LueLevyltä(ByRef omaObjekti As Object, ByVal sFile As String)
'Objektin luku levyltä
Dim omaFormatter As New Formatters.Binary.BinaryFormatter
Dim fs As New FileStream(sFile, FileMode.Open)
fs.Position = 0
omaObjekti = omaFormatter.Deserialize(fs)
fs.Close()
End Sub
' Luokka , jota vastaava objekti halutaan tallentaa levylle, on oltava Serializable
<Serializable()> _
Public Class OmaLuokka
Public SisäinenData As Integer
Public Sub New(ByVal data As Integer)
SisäinenData = data
End Sub
End Class
End ClassHieno!