+ -
当前位置:首页 → 问答吧 → C++ 怎么检测一个目录下的文件被占用?

C++ 怎么检测一个目录下的文件被占用?

时间:2011-12-01

来源:互联网

C++ 怎么检测一个目录下的文件被占用?

作者: liulcsy   发布时间: 2011-12-01

vc可以试试这个

C/C++ code
    public bool IsFileLocked(string filename)
        {
            bool Locked = false;
            try
            {
                FileStream fs =
                    File.Open(filename, FileMode. OpenOrCreate,
                    FileAccess.ReadWrite, FileShare.None);
                fs.Close();
            }
            catch (IOException ex)
            {
                Locked = true;
            }
            return Locked;
        }


或者使用api

C/C++ code
        const int ERROR_SHARING_VIOLATION = 32;

        private bool IsFileInUse(string fileName)
        {
            bool inUse = false;

            SafeFileHandle fileHandle = 
            CreateFile(fileName, FileSystemRights.Modify, 
                  FileShare.Write, IntPtr.Zero,                  
                  FileMode.OpenOrCreate, FileOptions.None, IntPtr.Zero);

            if (fileHandle.IsInvalid)
            {
               if (Marshal.GetLastWin32Error() == 
                   ERROR_SHARING_VIOLATION)
               {
                    inUse = true;
               }           
            }
            fileHandle.Close();
            return inUse;
        }


来自
http://social.msdn.microsoft.com/Forums/zh-CN/netfxbcl/thread/dead0507-06f5-43e0-9250-a78437956bc8

作者: jennyvenus   发布时间: 2011-12-01