vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
deserialisierung auszulesende datei zu groß? (serialisierung) 
Autor: snejka
Datum: 26.08.09 11:21

Hallo,
ich habe ein Array definiert, das vielleicht ein bißchen größer ist als üblich:

Public TestArray(300, 52, 6, 2, 6, 50) As Single

Erstellen, und serialisieren, also das Speichern in einer Datei (TestArray.txt) auf der Festplatte, klappen prima.

Mein Prblem: Ich kann die Datei nicht mehr in das Array zurück einlesen?!
Die Datei hat jetzt eine Größe von 567 MB.
Verringere ich die letzte Dimension des Arrays von 50 auf 15 verringert sich die Dateigröße auf ca. 150 MB und alles funktioniert wie erwartet???
(Mein Arbeitsspeicher hat 4 GB.)

Wie gesagt, wenn die Datei zu groß ist wird eine Exception - bei mir als ex definiert - ausgegeben:
"System.OutOfMemoryException
(TestArray = formatter.Deserialize(fs)
Catch ex As Exception)

Ich finde die Lösung eigentlich sehr elegant und würde nur ungerne auf eine alternative Lösung zurückgreifen.

Für mich wären zwei Lösungsansätze naheliegend:
1. Dei Dateigröße verringern - falls das möglich ist?
2. Die zulässige Größe der Datei beim Deserialisieren erhöhen.

Für Hilfe wäre ich sehr dankbar!

Hier noch mein VB.net-Code:

Für das Deserialisieren:
Private Sub laden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles laden.Click
Dim success As Boolean = False
If IO.File.Exists(Pfad) Then
Dim fs As FileStream = Nothing
Dim formatter As New BinaryFormatter

Try
fs = New FileStream(Pfad, FileMode.Open, FileAccess.Read)
TestArray = formatter.Deserialize(fs)
success = True
Catch ex As Exception
Finally
If Not IsNothing(fs) Then fs.Close()
End Try
End If
End Sub

Für das Serialisieren:
Public Function ArraySpeichern(ByVal Filename As String, ByVal Arr As Object) As Boolean
Dim fs As FileStream = Nothing
Dim Success As Boolean = False

Try
fs = New FileStream(Filename, FileMode.Create, FileAccess.Write)
Dim formatter As New BinaryFormatter
formatter.Serialize(fs, Arr)
Success = True

Catch ex As Exception
Finally
If Not IsNothing(fs) Then fs.Close()
End Try

Return (Success)
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
deserialisierung auszulesende datei zu groß? (serialisierung...1.661snejka26.08.09 11:21
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.168keco26.08.09 11:29
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.180snejka26.08.09 11:37
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.191ModeratorDaveS26.08.09 11:50
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.107snejka26.08.09 11:58
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.079ModeratorDaveS26.08.09 12:28
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.143snejka26.08.09 12:43
Re: deserialisierung auszulesende datei zu groß? (serialisie...1.087ModeratorDaveS26.08.09 13:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel