dynamischen stream nach beschreiben 'säubern'

Bubblez

Mitglied
Einen frisch initialisierten MemoryStream übergebe ich einem StreamWriter:
System.IO.MemoryStream myStream = new System.IO.MemoryStream();
StreamWriter writer = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(850));

In einer Schlaufe füge ich diesem writer mit WriteLine ständig neue Daten hinzu.
Wenn ich im Debugmodus mein myStream objekt anschaue, dann habe ich da n par tausend Einträge, dessen Wert ein ASCII-Wert ist ;). Nun sind aber die letzten par (weiss nicht vielleicht 100) Einträge im buffer mit dem Wert 0.
Ich vermute, dass kommt daher, dass mein stream eine dynamische grösse hat und dass der writer die grösse vom stream nicht immer um eins sondern um vielleicht 100 Einträge erweitert, sobald er merkt das der Platz nicht mehr reicht.

Ich kann mein stream durchgehen und nur die Einträge mit value == 0 rauslöschen. Ich frage mich aber ob es da nicht eine besser Variante gib ... ?
 

zioProduct

Erfahrenes Mitglied
Intressant wäre es vielleicht noch, wenn man sieht, wie du den Stream füllst, vielleicht reicht es schon, wenn man dir da nen Tipp geben kann? Und komisch finde ich, das der Writer weiter schreibt, wenn er doch nicht mehr hat oO. Deshalb wär ein Codefetzen nicht schlecht.

so long
ziop
 

Bubblez

Mitglied
Code:
for (int j=0; j<ies.Count; j++)
{
if (!((LvRecord) ies[j]).deletetd)
{
writer.WriteLine(((LvRecord) ies[j]).content);
}
}
so schreibe ich über den streamwriter in mein stream. Die Variable content enthält nie diese nullwerte, wie ich sie zum Schluss im buffer drin habe.

Das Problem ist eben, dass ich den bytearray in der Datenbank speicher um daraus später eine Datei zu generieren. Diese Datei wird immer grösser, bei jedem lesen / speichern Zugriff, da ja eben jedesmal unnötige null-bytes angehängt werden.