簡體   English   中英

保存 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只是 memory 中的一個字節數組。 所以它將文件寫入 memory,而不是文件。

File.OpenWrite(path)打開具有指定路徑的FileStream 如果文件不存在,它會創建它。 如果文件確實存在,它將覆蓋它。

因此,當您調用doc.Save(fileStream)時,您正在寫入文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM