本文主要是介绍C++ 判断目标文件是否被占用(独占)(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在IM软件中发起文件发送时,如果要发送的是某word文件,并且该word文件被office打开,则会提示文件正在被占用无法发送,如下所示:
那文件被占用到底是如何判断出来的呢?其实很简单,调用系统API函数CreateFile,打开该文件(OPEN_EXISTING),传入FILE_SHARE_READ共享读标记位,如果文件被占用,则文件会打开失败。
1、判断文件被占用的代码
判断文件被占用的接口函数 IsFileOccupiedByOtherProgram,实现如下:
BOOL IsFileOccupiedByOtherProgram( const CString& strFilePath )
{// 检测的办法是通过研究某软件的文件传输表现现象来确定的HANDLE hFile = CreateFile( strFilePath, GENERIC_READ,FILE_SHARE_READ, // 读共享,但写不共享,如果有程序正在占用着文件写,则该函数会返回失败NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );if
这篇关于C++ 判断目标文件是否被占用(独占)(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!