Hallo zusammen,
ich versuche derzeit bestimmte Zeilen einer Datei mit Hilfe der Stream.Seek Methode zu erfassen
und dann in eine andere Datei zu schreiben.
Dabei gehe ich folgendermaßen vor:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| StreamWriter sw = new StreamWriter(outPutFilePath, false, Encoding.GetEncoding(codepage)); Stream stream = File.Open(_filePath, FileMode.Open);
int counter = 0; byte[] line = new byte[fileLineLength];
foreach(int rowNumber in RowNumbers) { counter++; stream.Seek((fileLineLength * (rowNumber -1)),SeekOrigin.Begin); stream.Read(line,0,fileLineLength)); }
sw.BaseStream.Write(line, 0, fileLineLength); |
Bei kleinen Dateien funktioniert das auch super.
Allerdings bekomme ich bei Dateien so ca ab 2GB Größe, Probleme.
Folgende Fehlermeldung entsteht dann in der Zeile in der Seek() ausgeführt wird:
"IO.Exception Es wurde versucht, den Dateizeiger vor den Anfang der Datei zu bewegen.\r\n"
Ich habe schon überall im Internet geschaut und verschiedene Lösungsansätze
ausprobiert aber ich werde den Fehler nicht los.
Hat vielleicht jemand eine Idee oder einen Tip auf Lager?
Vielen Dank und Liebe Grüße!
Moderiert von
Th69: C#-Tags hinzugefügt