我正在写入文件时,我希望阻止任何其他进程将其写入文件,但允许从文件中读取。
我正在使用这个
File.AppendAllText(fileName.csv, data)
答案 0 :(得分:0)
打开文件时,您需要使用FileShare.Read
。要自己指定此标志,您需要同时创建FileStream
和StreamWriter
:
using (var fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
{
fileStream.Seek(0, SeekOrigin.End);
using (var streamWriter = new StreamWriter(fileStream))
{
streamWriter.Write(text);
Console.ReadLine();
}
}
但是,如果您深入研究.NET的源代码,则可以看到File.AppendAllText
使用了correct sharing mode,因此您无需执行任何操作即可防止其他进程写入文件当您附加到它时。
FileStream f = new FileStream(path, mode, FileAccess.Write, FileShare.Read,
DefaultFileStreamBufferSize, FileOptions.SequentialScan, Path.GetFileName(path), false, false, checkHost);
这并不奇怪。如果File.AppendAllText
允许在附加文本时其他进程将文件写入文件,则您可能会感到非常讨厌且难以发现错误。