Rubrik: Variablen/Strings · Array/ArrayList | VB-Versionen: VB2005, VB2008 | 14.07.09 |
Array in Datei speichern und wieder laden Mit Hilfe der Serialization-Klasse lassen sich komplette Arrays auf einfache Weise in eine Datei speichern und daraus auch wieder laden. | ||
Autor: Dieter Otter | Bewertung: | Views: 26.626 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Immer wieder im Forum gefragt: wie kann man am einfachsten ein gesamtes Array in eine Datei speichern und von dort aus wieder laden?
Die Antwort lautet: Serialization
Nachfolgende zwei Funktionen zeigen, wie sich ein Array in binärer Form speichern und wieder laden lässt.
Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary
''' <summary> ''' Speichert das angegebene Array binär in die angegebene Datei. ''' </summary> ''' <param name="Filename">Dateiname</param> ''' <param name="arr">Array, das gespeichert werden soll</param> Public Function ArraySave(ByVal Filename As String, _ ByVal arr As Object) As Boolean Dim fs As FileStream = Nothing Dim Success As Boolean = False Try ' Datei zum Schreiben öffnen fs = New FileStream(Filename, FileMode.Create, FileAccess.Write) ' Array serialisieren und speichern Dim formatter As New BinaryFormatter() formatter.Serialize(fs, arr) Success = True Catch ex As Exception Finally ' Datei schließen If Not IsNothing(fs) Then fs.Close() End Try Return (Success) End Function
''' <summary> ''' Liest ein zuvor gespeichertes Array aus der angegebenen Datei aus. ''' </summary> ''' <param name="Filename">Dateiname</param> ''' <param name="arr">Array, das die Daten enthalten soll.</param> Public Function ArrayRead(ByVal Filename As String, _ ByRef arr As Object) As Boolean Dim Success As Boolean = False ' Prüfen, ob Datei existiert If IO.File.Exists(Filename) Then Dim fs As FileStream = Nothing Try ' Datei zum Lesen öffnen fs = New FileStream(Filename, FileMode.Open, FileAccess.Read) ' Daten deserialiseren und dem Array zuweisen Dim formatter As New BinaryFormatter() arr = formatter.Deserialize(fs) Success = True Catch ex As Exception Finally ' Datei schließen If Not IsNothing(fs) Then fs.Close() End Try End If Return (Success) End Function
Aufrufbeispiel:
' Integer-Array erstellen und speichern Dim myArray() As Integer = {1, 5, 7, 9, 11} ArraySave("d:\test-int.dat", myArray)
' Integer-Array aus Datei laden Dim myArray() As Integer = Nothing If ArrayRead("d:\test-int.bin", myArray) Then ... End If
Die Funktionen lassen natürlich auch auf andere Datentypen anwenden, wie bspw. ein String-Array:
' Striong-Array erstellen und speichern Dim myArray() As String = {"Dieter", "Roland", "Heiko", "Julia"} ArraySave("d:\test-string.bin", myArray)
' String-Array aus Datei laden Dim myArray() As String = Nothing If ArrayRead("d:\test-string.dat", myArray) Then ... End If