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 Class
Hieno!