XML System.UnauthorizedAccessException

时间:2015-11-28 08:36:01

标签: c# xml

当我尝试将Xml文件保存到特定文件夹时,在第一次保存时很好,因为其中没有现有的xml文件,但是如果我将它再次保存在同一文件夹中同名错误将显示......

这是我生成xml文件的示例代码....

 XMLPath = Path.Combine(TargetRFIFolder, filename);

                try
                {
                    XmlWriter xmlWriter = XmlWriter.Create(XMLPath);

                    xmlWriter.WriteStartDocument();
                    xmlWriter.WriteStartElement("TeklaPartObject");

                    foreach (ListViewItem item in lv_Tekla_object.Items)
                    {
                        xmlWriter.WriteStartElement("part");
                        xmlWriter.WriteAttributeString("ID", item.Text);
                        xmlWriter.WriteString(item.SubItems[1].Text);
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteStartElement("label");
                    xmlWriter.WriteString(Path.GetFileName(lv_Directories.SelectedItems[0].ToolTipText));
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndDocument();
                    xmlWriter.Close();
                    xmlWriter.Flush();
                    File.SetAttributes(XMLPath, File.GetAttributes(XMLPath) | FileAttributes.Hidden);

感谢帮助人员,问候

2 个答案:

答案 0 :(得分:0)

您可以在XmlWriter中创建一个流并使用它。下一个程序说明了这一点。它创建了两次XML文件(test.xml)。第二次它覆盖现有文件。

using System.IO;
using System.Xml;

namespace StackoverflowXmlFilesConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteXml("test.xml");
            WriteXml("test.xml");
        }

        static void WriteXml(string path)
        {
            using (var stream  = File.Open(path, FileMode.Create))
            {
                using (var writer = XmlWriter.Create(stream))
                {
                    writer.WriteStartDocument();
                    // replace this code with your XML writing code.
                    writer.WriteStartElement("Test");
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                }
            }
        }
    }
}

答案 1 :(得分:0)

您无法访问隐藏文件 首先删除属性如下

File.SetAttributes(XMLPath, File.GetAttributes(XMLPath) & ~FileAttributes.Hidden);

然后您可以将其再次保存在同名的同一文件夹中 然后你可以再次设置隐藏属性。