Hi!
Ich habe da ein Problem mit der Read Funktion der .Net FileStreamklasse.
Und zwar tendiert die irgendwie über das Array hinaus zu schreiben.
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); |
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 Christian S.: Code- durch C#-Tags ersetzt