【发布时间】:2018-07-14 04:15:53
【问题描述】:
所以我目前正在创建一个带有清除命令的 Discord 机器人。但是,我想将删除消息的时间、作者和数量作为日志写入文件。
我为此使用 Newtonsoft.Json,我的代码不变。
using (StreamWriter file = File.CreateText(@"C:\Users\COCON\source\repos\DiscordAdmin\DiscordAdmin\Logs\Purge.json")) //create json file at this path.
{
JsonSerializer serializer = new JsonSerializer();
//serialize object directly into file stream
serializer.Serialize(file, LocalTime + ": " + Sender + " has executed the purge command on " + message + " messages"); //Serialize the time, the author of the command and how many messages they purged
}
这段代码的问题是每次它尝试记录给定的命令时,它只会覆盖第一个日志。那么我如何强制它每次都写入一个新行呢?我希望继续使用这种方法。
【问题讨论】:
-
File.CreateText将创建一个新文件并覆盖任何现有文件。请注意,如果您这样做,您将无法神奇地反序列化文件,您必须逐行手动进行 -
您每次都在创建。您可以附加到文件名以每次创建不同的文件或使用 System.IO.File.WriteAllText(filePath, jsonData);只写入已经存在的文件
-
@JoshAdams 谢谢,改变了它,所以如果没有文件,它会创建一个然后写入它,如果有它只是忽略创建一个并用新行直接写入它!
-
很高兴我能帮上忙!你想让我发布一个解决方案还是你可以发布你自己的:)
标签: c# json serialization json.net discord