Moin,
ich möchte eine Datei in einen MemoryStream lesen, dort bearbeiten und anschließend wieder in die zuvor geöffnete Datei schreiben.
Das hat den Sinn, dass ich dann einige Dateien bearbeiten kann, ohne, dass die originale Datei geändert wird, bis die Änderungen dann wieder geschrieben werden.
Ich habe dann sozusagen eine Dummy-Datei im Speicher und kann beliebige Änderungen machen, ohne Gefahr zu laufen, das Original zu beschädigen.
Ich hab dafür einen FileStream geöffnet und für andere Prozesse gesperrt, kopiere diese Daten in einen MemoryStream, schreibe dort anschließend eine Zeichenfolge rein und kopiere dessen Inhalt schlussendlich dann wieder in die Datei.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| using (var file = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { using (var fileMemory = new MemoryStream()) { file.CopyTo(fileMemory);
using (var writer = new StreamWriter(fileMemory)) { writer.Write("4321");
fileMemory.CopyTo(file); } } } |
Das Ergebnis ist kein Fehler und kein Unterschied in der Datei.
Ich habe in der Datei 1234 stehen und müsste danach 4321 finden können, ist aber nicht so.
Kann mir jemand einen Hinweis geben, was ich falsch gemacht habe?
Gruß