2009-07-29 114 views
4

我写在C#中,其将数据保存到XML的应用程序。当我重新打开应用程序它说文件访问被拒绝在.NET

访问路径'C:\ ProgramData \ Test \ abc.xml'被拒绝。

任何一个可以请帮我理清这个问题。

有没有办法找到原因访问被拒绝。

+0

你能告诉你如何写入文件吗? – 2009-07-29 10:15:11

回答

1

使用Unlocker知道是哪个程序锁定该文件,并重构代码,如果你的应用程序,你应该读或写

+1

我猜这会显示出同样的应用程序还在锁定文件... – 2009-07-29 10:23:38

+0

是的,但他说重启后有问题,关闭应用程序锁定文件?当然如果它正确关闭 – 2009-07-29 10:52:35

2

后关闭文件这将是有益的,如果你目前的找出确切原因你正在使用的代码。没有这一点,我的猜测是你的应用程序离开处理到Filestream开放。

你应该总是处置使用Dispose模式(或使用using construct)非托管引用。

2

这是一个常见的问题我已经与XML作家的过去发现的。如果正在使用的文件流没有正确关闭,则该文件将保持锁定状态。我说这是一个问题,主要是因为我注意到由于某种原因,即使应用程序已关闭,锁仍然存在,但我只在这种方式使用XML编写器时才看到它发生(不知道为什么呢)。

基本上,只要使用“使用”的关键字,以确保您的作家是正确关闭。代码应该看起来像这样:

using(XmlWriter _myXmlWriter = XmlWriter.Create(outputStream, xmlWriterSettings)) 
{ 
    //Build XML here 
} 
4

您可能会收到此错误,因为您正在运行Vista或Win7并且您已打开UAC。

C:\ ProgramData需要管理员指定要写入(但不能读取)。

我刚刚发现了这个困难的方式,因为我一直在研究一个在XP上运行良好的程序,该程序使用了System.Environment.SpecialFolder.CommonApplicationData,它在Vista中指向上述位置,并且需要提升的privs才能写入到那个目录。