检测文件被占用

来源:互联网 发布:土巴兔怎么样 知乎 编辑:程序博客网 时间:2024/05/17 22:13

使用场景:
导出文件,在相同路径下有同名文件已经被打开,文件被占用,crash;
检测导出的文件是否已被占用在决定文件是否允许导出。

[DllImport("kernel32.dll")]public static extern IntPtr _lopen(string lpPathName, int iReadWrite);[DllImport("kernel32.dll")]public static extern bool CloseHandle(IntPtr hObject);public const int OF_READWRITE = 2;public const int OF_SHARE_DENY_NONE = 0x40;public readonly IntPtr HFILE_ERROR = new IntPtr(-1);/// <summary>/// 检测文件被占用 /// </summary>/// <param name="FileNames">要检测的文件路径</param>/// <returns></returns>public bool CheckFiles(string FileNames){   if (!File.Exists(FileNames))   {      //文件不存在      return true;   }   IntPtr vHandle = _lopen(FileNames, OF_READWRITE | OF_SHARE_DENY_NONE);   if (vHandle == HFILE_ERROR)   {        //文件被占用        return false;   }       //文件没被占用       CloseHandle(vHandle);       return true;   }
原创粉丝点击