Autor Beitrag
Weisswurst
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 11.04.07 10:41 
Hi!

Ich habe da ein Problem mit der Read Funktion der .Net FileStreamklasse.
Und zwar tendiert die irgendwie über das Array hinaus zu schreiben.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
FileStream fs = File.OpenRead(m_strDateiPfad);
byte[] byCodeBuffer = new byte[4];
Console.Write(Convert.ToString(byCodeBuffer.Length)+"...\n");
iBytesRead = fs.Read(byCodeBuffer, 0, byCodeBuffer.Length - 1); 

foreach(byte buffer in byCodeBuffer)
            Console.Write(buffer+".");
Console.WriteLine(" Gelesene Zeichen: " + Convert.ToString(iBytesRead));
emptyArray(byCodeBuffer); //Refill mit 0


Ich habe eine Testdatei mit den Zeichen AB und zwei mal Zeilenumbruch. Unter Linux sind das also die Zeichen 65;66;10;10.

Wenn ich den obigen Code, in einer Schleife bis Dateiende, ausführe bekomme ich folgende Ausgabe:

4...
Gelesene Zeichen: 3
65.66.10.0. Gelesene Zeichen: 3
4...
Gelesene Zeichen: 1
10.0.0.0. Gelesene Zeichen: 1

Soweit so schön. Wir sehen also, dass theoretisch gesehen die ganze Datei in einem Zug in das Array passen müsste. Wenn ich das -1 beim auslesen weglasse, dann bekomm ich aber einen Fehler, weil ich über die Arraygrenzen hinaus schreiben will. Tatsächlich beginnt die Read Funktion aber das Array bei 0 zu befüllen.

Hab ich irgendwas ganz dummes übersehen?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt