我正在编写一个小类来管理内部应用程序的配置XML。
每次加载新的t列表时都会调用以下代码,并尝试序列化新t的数据,或者加载t已经存在。
我错过了一些基本的东西,但我不知道在哪里。
此代码抛出异常
if (!File.Exists(Path.Combine(Environment.CurrentDirectory + "TaskData.xml")))
{
XDocument doc = new XDocument();
XElement rootElement = new XElement("ConfigData",
new XElement("Servers"),
new XElement("Paths"));
doc.Add(rootElement);
doc.Save("TaskData.xml");
}
具体行是' doc.Save(" TaskData.xml")'。
在第一次迭代时,这很好用,代码会创建模板文件。
在第二次迭代中,即使xml文件在目录中,File.Exists也会返回' false',并且doc.Save会抛出权限异常。
非常感谢任何帮助。
答案 0 :(得分:0)
我很惊讶它正在进行第一次迭代 - 因为你没有检查有用的文件。您不是使用多个参数调用Path.Combine
,而是将TaskData.xml
与当前目录连接起来。你想要:
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "TaskData.xml")))
遗憾的是,您当前的代码甚至可以编译......可以说Path.Combine
的重载应该首先至少有2个必需的非参数数组参数。