繁体   English   中英

尝试执行删除时文件被锁定

[英]File is being locked when I try to execute delete

我有一项从目录中读取xml文档的服务(正常运行),将数据保存在sql中(正常运行),然后将文件复制到已完成的目录(正常运行)并删除文件(无效)从阅读目录。 我遇到的问题是,当我尝试执行DELETE时文件已被锁定。 任何建议将不胜感激,所以我可以找到文件被锁定的位置。

static public Res GetResMn(string FileName)             
XDocument root = null;
using (var file = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            using (StreamReader oReader = new StreamReader(file, Encoding.GetEncoding("ISO-8859-1")))
            {
                root = XDocument.Load(oReader);
                oReader.Close();
                oReader.Dispose();
            }

这是复制和删除的代码

    void CopyFile(string FileToMove, string MoveLocation)
    {
        try
        {
             System.IO.File.Copy(FileToMove, MoveLocation, true);
            //System.IO.File.Move(FileToMove, MoveLocation);

                File.Delete(FileToMove);
        }
        catch (Exception e)
        {
            WriteLogFile("The process failed: {0} " + e.ToString());
        }
    }

这是当我从文件中获取值时的代码

    var myElement1 = root.Descendants(XName.Get("rnID", @"namespace.2.0")).FirstOrDefault();
    if (myElement1 != null)
    {
        myRPr.rnID = root.Descendants(XName.Get("rnID", @"namespace.2.0")).FirstOrDefault().Value;
    }

这是我在logFile中遇到的错误

{0} System.UnauthorizedAccessException: Access to the path 'C:\ReadingDirectory\FileName.xml' is denied.
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.Delete(String path)
    at OperaWinSrvc.OperaWinSrvc.ReadFiles()

我尝试System.IO.File.Move时遇到了相同类型的错误

尝试删除之前,请确保在文件对象上调用.Close() ,并且还具有从该文件夹删除的安全权限。

“拒绝访问”通常是一个权限问题,但有时可能是由文件锁定情况引起的。

在不同地方进行了多次检查之后,我终于找到了解决问题的方法。 在服务安装程序中,我将“帐户”属性设置为“本地服务”,将其更改为“本地系统”,重新安装该服务,它现在似乎可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM