[英]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.