Gå til innhold

Lagre en fil, ikke en tekst


Gjest Slettet-aNZFa3

Anbefalte innlegg

Gjest Slettet-aNZFa3

Hvordan lagrer jeg alle variablene i programmet og bokstavelig talt hele programmet til en .sav fil. Fra textbox til .txt veit jeg.

 

Btw åssen laster jeg inn den .sav filen etterpå?

Lenke til kommentar
Videoannonse
Annonse

Du kan eksempelvis benytte serialization - å dumpe innholdet i et objekt til en fil (enten i XML eller binært format) og siden initialisere det direkte fra filen. La oss si du ønsker å lagre en liste med kunder av dette oppsettet:

' Følgende linje MÅ legges til for at serialisering skal kunne fungere

<System.Serializable()> _

Public Class Customer

 

    ' Variabler som kan lagres

    Public Name As String

    Public Age As Integer

    Public Phone As String

    Public Fax As String

    Public Email As String

    Public ZipCode As Integer

    Public Address As String

    Public Country As String

 

    ' Felt og egenskaper som ikke skal serialiseres, må avmerkes således

    <System.NonSerialized()> _

    Public Tag As Object

 

    Public Sub New()

        ' Dersom du bruker New(), må du alltid inkludere en TOM initialisering

    End Sub

 

    Public Sub New(ByVal Name As String)

        Me.Name = Name

    End Sub

 

    ' Osv.

End Class

Legg så til følgende kode i en egen fil:

Klikk for å se/fjerne innholdet nedenfor
Imports System.IO

Imports System.Runtime.Serialization.Formatters.Binary

Imports System.Xml.Serialization

 

Public Class Serialization(Of T)

 

    Public Shared Sub Save(ByVal Item As T, ByVal File As String, ByVal UseXML As Boolean)

 

        ' Delete the file if it already exists

        If IO.File.Exists(File) Then

            IO.File.Delete(File)

        End If

 

        ' Create the file and serialize the object

        Using oFile As New IO.FileStream(File, IO.FileMode.CreateNew)

            Save(Item, oFile, UseXML)

        End Using

 

    End Sub

 

    Public Shared Sub Save(ByVal Item As T, ByVal Output As Stream, ByVal UseXML As Boolean)

 

        Dim oBinary As New BinaryFormatter

        Dim oXML As New XmlSerializer(Item.GetType)

 

        ' Deserialize the object depending on the file type

        If UseXML Then

            oXML.Serialize(Output, Item)

        Else

            oBinary.Serialize(Output, Item)

        End If

 

    End Sub

 

    Public Shared Function Load(ByVal File As String, ByVal UseXML As Boolean) As T

 

        ' Open the file stream and deserialize the object depending on the file type

        Using oFile As New IO.FileStream(File, IO.FileMode.Open)

            Return Load(oFile, UseXML)

        End Using

 

    End Function

 

    Public Shared Function Load(ByVal Input As Stream, ByVal UseXML As Boolean) As T

 

        Dim oBinary As New BinaryFormatter

        Dim oXML As New XmlSerializer(GetType(T))

 

        ' Do the requred operation

        If UseXML Then

            Return oXML.Deserialize(Input)

        Else

            Return oBinary.Deserialize(Input)

        End If

 

    End Function

 

End Class

Da vil du kunne lagre/åpne lister av kunder som følger:

Dim Customers As New List(Of Customer), Result As List(Of Customer)

 

' Legg til kunder

Customers.Add(New Customer("Ole Nordmann"))

Customers.Add(New Customer("Kari Nordmann"))

 

' Lagre liste

Serialization(Of List(Of Customer)).Save(Customers, "C:\Test.dat", False)

 

' Åpne liste

Result = Serialization(Of List(Of Customer)).Load("C:\Test.dat", False)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...