vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Array/ArrayList   |   VB-Versionen: VB2005, VB200814.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 OtterBewertung:  Views:  26.626 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11kein 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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.