ich ein FileStream
bin mit der Datei zu sperren, nicht für andere Prozesse beschreibbar zu sein und auch lesen und schreiben, ich bin mit folgenden Methode für sie:liest und überschreibe auf dem gleichen Filestream
public static void ChangeOrAddLine(string newLine, string oldLine = "")
{
string filePath = "C:\\test.txt";
FileMode fm = FileMode.Create;
//FileMode fm = FileMode.OpenOrCreate;
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
using (StreamReader sr = new StreamReader(fs))
using (StreamWriter sw = new StreamWriter(fs))
{
List<string> lines = sr.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
bool lineFound = false;
if (oldLine != "")
for (int i = 0; i < lines.Count; i++)
if (lines[i] == oldLine)
{
lines[i] = newLine;
lineFound = true;
break;
}
if (!lineFound)
lines.Add(newLine);
sw.Write(string.Join("\r\n", lines));
}
}
Ich möchte es mit dem neuen Inhalt überschreiben, aber ich finde nicht das richtige FileMode
, mit FileMode.OpenOrCreate
einfach nur den neuen Inhalt an die alte und FileMode.Create
löscht den Dateiinhalt zu der Zeit, die FileStream
fm wurde initialisiert, so dass die Die Datei ist leer.
Ich muss gerade den alten Inhalt löschen, wenn ich den neuen Inhalt schreibe, ohne die Schreibsperre während der Ausführung der Methode zu verlieren.
Mögliches Duplikat von [So löschen Sie den Inhalt einer Datei] (http://stackoverflow.com/questions/4999988/to-clear-the-contents-of-a-file) – Igor