【发布时间】:2017-02-08 11:22:47
【问题描述】:
我正在使用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));
}
}
我想用新内容覆盖它,但我找不到正确的FileMode,使用FileMode.OpenOrCreate 只是将新内容附加到旧内容,FileMode.Create 当时删除文件内容, FileStream fm已经初始化,所以文件是空的。
我现在只需要清除旧内容,当我将新内容写入其中时,不会在方法运行期间丢失其上的写锁。
【问题讨论】:
标签: c# filestream