保存 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)
时,您正在写入文件。
我正在尝试从 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)
时,您正在写入文件。