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 现有文件的主要内容,如果未能解决你的问题,请参考以下文章

saveFileDialog:文件名无效

使用SaveFileDialog保存文件

从 SaveFileDialog 创建、写入和打开文本文件

Winform SaveFileDialog Word

禁用 savefiledialog 的文件名框

saveFileDialog 停止工作 + 从 Internet 下载文件