将Environment.NewLine添加到文件流中

时间:2017-05-13 18:50:16

标签: c# .net-core discord.net

我在一个.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,但我是一个完整的菜鸟,不知道我应该把代码放在哪里。我知道它有点问,但如果有人可以调整我的代码只是为了代替它记录一件事(删除以前的日志),它会添加换行符。

1 个答案:

答案 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);