保存 XML 文件的问题 (C#)

Issues with saving XML file (C#)

我正在尝试从 XML 文件创建一个配置文件,但我不知道如何在添加文件后保存该文件。我可以很好地读取文件,所以我知道它所在的位置不是问题,但我仍然不知道如何保存它。

我环顾了大约 2 个小时,无法找出问题所在。我熟悉 c#,但对 XML.

完全陌生
public async Task CreateReaction(string name, DiscordMessage message, DiscordEmoji emoji, DiscordRole role)
{
    string path = @"E:\Visual Studio\repos\JustHangoutBot\bin\Debug\netcoreapp1.1\configs\reactions.xml";
    XDocument doc = XDocument.Load(path);

    await message.CreateReactionAsync(emoji);

    XElement root = new XElement(name);
    root.Add(new XElement("MessageID", message.Id));
    root.Add(new XElement("ReactionID", emoji.Id));
    root.Add(new XElement("RoleID", role.Id));
    doc.Element("Reactions").Add(root);

    byte[] byteArray = Encoding.UTF8.GetBytes(path);
    MemoryStream stream = new MemoryStream(byteArray);
    doc.Save(stream);
}

我认为问题出在最后三行中。例如,我看过人们仅使用 doc.Save("reactions.xml") 来保存文件的教程,但我收到无法从字符串转换为 Stream 的错误。

如有任何帮助,我们将不胜感激。提前致谢!

这样做就可以了:

using (var fileStream = System.IO.File.OpenWrite("path to the file you want to write"))
{
    doc.Save(fileStream);
}

当你这样做时:

byte[] byteArray = Encoding.UTF8.GetBytes(path);
MemoryStream stream = new MemoryStream(byteArray);
doc.Save(stream);

发生的事情是

  • 您正在 path 打开文件并将其读入字节数组。
  • 您正在创建一个 MemoryStream 以这些字节作为其内容
  • 您正在将该文档保存到 MemoryStream

在幕后,MemoryStream 只是内存中的一个字节数组。所以它是将文件写入内存,而不是文件。

File.OpenWrite(path) 打开指定路径的 FileStream。如果该文件不存在,它会创建它。如果该文件确实存在,它将覆盖它。

因此,当您调用 doc.Save(fileStream) 时,您正在写入文件。