Entwickler-Ecke

IO, XML und Registry - Datei Byteweise überschreiben


Flash106 - Mo 26.03.07 12:50
Titel: Datei Byteweise überschreiben
Hallo,

ich versuche gerade eine Datei zu überschreiben, aber es ist äußerst ineffizient:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            FileInfo myFiles = new FileInfo(file);
            FileStream myStream = myFiles.OpenWrite();

            byte[] writeArray = { 0x55 };
            for (int i = 1; i <= myFiles.Length; i++)
            {
                myStream.Write(writeArray, 01);
                myStream.Position = i;
            }


Kann man das nicht irgendwie optimieren? Brauche jetz für eine 2 Mb datei elend lange :(


Christian S. - Mo 26.03.07 17:18

Hallo!

Zuerst einmal brauchst Du nicht jedes Mal die Position im Stream setzen. DIe Write-Methode schiebt die Position bereits weiter, sodass man das doppelt macht.

Zum anderen dürfte es sinnvoll sein, jeweils größere Mengen an Daten zu schreiben und nicht immer nur einzelne Bytes. Die Write-Methode nimmt ja nicht umsonst ein Array als Parameter ;-) Fürs Schreiben einzelnener Bytes gibt es übrigens die WriteByte-Methode.

Grüße
Christian


Flash106 - Mi 28.03.07 09:41

Vielen Dank. Habs so ausgebaut das er jetzt immer knapp 1MB schreibt klappt super. Danke :)