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

本文关键字:文件 锁定 删除 执行 | 更新日期: 2023-09-27 18:20:45

我有一个服务,它可以从目录中读取xml文档(工作正常),将数据保存在sql中(工作良好),然后我将文件复制到FINISHED目录中(工作正常"),并从读取目录中删除文件(不工作)。我遇到的问题是,当我尝试执行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;
    }

这是我在日志文件中得到的错误

{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(),并且您也具有从该文件夹中删除的安全权限。

拒绝访问通常是一个权限问题,但偶尔也可能是由文件锁定条件引起的。

在不同的地方做了多次检查后,我终于找到了问题的解决方案。在服务安装程序中,我将Account属性设置为Local service,然后将其更改为LocalSystem,重新安装服务,它现在似乎可以工作了。