【发布时间】:2019-01-31 20:59:21
【问题描述】:
Documentation 说FileMode.OpenOrCreate“指定操作系统应该打开一个文件,如果它存在;否则,应该创建一个新文件”,听起来它会打开文件并写入它。相反,该文件似乎被覆盖了。
如何添加到文件中,而不是覆盖它?
class Logger : IDisposable
{
private FileStream fs;
private StreamWriter sw;
public Logger()
{
// INTENT (but not reality): Will create file if one does not exist, otherwise opens existing file
fs = new FileStream("log.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
sw = new StreamWriter(fs, Encoding.UTF8);
}
public void Log(string message)
{
sw.WriteLine(message);
sw.Flush();
fs.Flush();
}
public void Dispose()
{
sw?.Dispose();
fs?.Dispose();
}
}
【问题讨论】:
-
好吧,尽管答案的优点和“独特性”,我认为这个问题的优点在于它同情
FileMode.OpenOrCreate可能被认为会覆盖文件的误解。 (毕竟FileMode.Create会)。所以我删除了我上面关于重复的评论(链接可能仍然与这个问题相关)
标签: c# filestream streamwriter