我在一个.net控制台应用程序中制作了一个discord bot,我在流编写器上花了很多时间,所以我正在尝试文件流,我没有遇到与流编写器相同的错误,但我遇到了问题关闭添加新行,
string path = @"C:\PathWouldBeHere\Log.txt"; // path to file
using (FileStream fs = File.Create(path))
{
string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}"; //your data
byte[] info = new UTF8Encoding(true).GetBytes(dataasstring);
fs.Write(info, 0, info.Length);
}
现在我知道我可以使用Environment.NewLine
,但我是一个完整的菜鸟,不知道我应该把代码放在哪里。我知道它有点问,但如果有人可以调整我的代码只是为了代替它记录一件事(删除以前的日志),它会添加换行符。
答案 0 :(得分:1)
您正在使用File.Create
,它会在该位置创建一个新文件,并删除那里已存在的任何文件。您想要的是使用带有FileStream
标志的FileMode.Append
构造函数:
using (FileStream fs = new FileStream(path, FileMode.Append))
{
string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}{Environment.NewLine}"; //your data
byte[] info = new UTF8Encoding(true).GetBytes(dataasstring);
fs.Write(info, 0, info.Length);
}
或者,您可以完全跳过流方法,只需使用以下内容:
string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}{Environment.NewLine}";
File.AppendAllText(path, dataasstring);