SaveFileDialog 现有文件
Posted
技术标签:
【中文标题】SaveFileDialog 现有文件【英文标题】:SaveFileDialog existing file 【发布时间】:2014-06-25 15:44:52 【问题描述】:我在 C# 中使用 savefiledialog,我允许用户将 xml 节点保存到文件中,但是如果用户选择创建一个新文件并将节点保存在其中,它可以工作,但是当用户选择保存时到现有文件,然后将其覆盖。我需要的是它可以加载文件,我可以在其中附加节点,谢谢
Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();
sfd.FileName = "untitled"; // Default file name
sfd.DefaultExt = ".xml"; // Default file extension
sfd.Filter = "Xml documents (.xml)|*.xml";
Nullable<bool> result = sfd.ShowDialog();
if (result == true)
if (System.IO.Path.GetExtension(sfd.FileName) != ".xml")
MessageBox.Show("You can only choose files with .xml extensions");
return;
this.save_xml_file(sfd.FileName);
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", "no");
doc.AppendChild(docNode);
XmlNode fubiRec = Doc.CreateElement("FubiRecognizers");
XmlAttribute conf = Doc.CreateAttribute("globalMinConfidence");
conf.Value = "0.51";
fubiRec.Attributes.Append(conf);
doc.AppendChild(fubiRec);
XmlAttribute gestureAttribute = doc.CreateAttribute("name");
gestureAttribute.Value = gestureName;
gestureNode.Attributes.Append(gestureAttribute);
fubiRec.AppendChild(gestureNode);
【问题讨论】:
追加或覆盖操作取决于您写入文件的方式,而不是您如何选择它。提供您用于写入文件的代码,我们可以提供帮助。 如果你能帮助我,我已经发布了代码 您尚未发布用于写入文件的代码。您已经发布了对写入我们看不到的文件的函数 (save_xml_file()
) 的调用。再次,请发布您用于写入文件的代码。
哦 :D 我的坏事来了
后面的部分是save_xml_file
【参考方案1】:
如果你使用 FileStream 和 StreamWriter 那么你需要先指定你的 Stream 类型。
FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write);
FileMode.Append 会在文件不存在时创建文件,并追加存在的文件。
然后在StreamWriter中使用
StreamWriter sw = new StreamWriter(fileSTream, Encoding.Default);
如果您不使用这种流或写入器,总会有类似的东西可用。
【讨论】:
以上是关于SaveFileDialog 现有文件的主要内容,如果未能解决你的问题,请参考以下文章