检测磁盘文件是否发生变化
来源:互联网 发布:python精通pdf 百度云 编辑:程序博客网 时间:2024/04/23 22:09
由于某种原因需要不断地检查磁盘或磁盘中的某个文件夹及文件夹内的子文件夹和文件是否发生了变化(如创建了新文件、创建了新文件夹,文件或文件夹被删除等),如需要做一个自动上传的客户端程序,往服务器上传文件,则可以使用:FindFirstChangeNotification API函数来决定什么时候可以上传:
HANDLE WINAPI FindFirstChangeNotification(
__in LPCTSTR lpPathName,
__in BOOL bWatchSubtree,
__in DWORD dwNotifyFilter
);
dwNotifyFilter参数标识了待检测的条件,当该条件成立时,FindFirstChangeNotification函数就会返回发生此次改变的通告对象句柄。
下面是使用该函数的一人示例程序,该程序使用一个线程来不断地检测D盘根目录下的文件夹及文件的状态变化。在该线程函数中,WaitForSingleObject函数等待D盘根目录下的文件夹及文件的状态变化。当有变化发生时, hChange将变成有信号状态。
DWORD CMainFrame::DetectDirThreadProc(LPVOID lpParam)
{while(TRUE)
{
HANDLE hChange=::FindFirstChangeNotification("D:\\",TRUE,FILE_NOTIFY_CHANGE_SIZE/*| FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME*/);
if (hChange == INVALID_HANDLE_VALUE)
{
AfxMessageBox("FindFirstChangeNotification() Error!");
return -1;
}
DWORD dwRet=::WaitForSingleObject(hChange,INFINITE);
if(WAIT_OBJECT_0==dwRet)
{
AfxMessageBox("Changing!");
}
}
return 0;
}
当dwNotifyFilter取值FILE_NOTIFY_CHANGE_SIZE,表示检测磁盘是否有文件写入,但创建文件及文件夹、移动文件或文件夹、永久删除文件及文件夹操作时该状态变化不会被标识。
- 检测磁盘文件是否发生变化
- JAVA 项目监听文件是否发生变化
- 保存时检测窗体上控件中的数据是否发生变化 asp
- 检测文件是否真的写入了磁盘?
- 监视注册表项是否发生变化
- Android 查看通讯录Contacts是否发生变化
- 检查form表单数据是否发生变化
- jquery 监听页面是否发生了变化
- git本地仓库文件路径发生变化
- JAVA监听磁盘文件状态的变化
- 使用QFileSystemWatcher监控磁盘文件状态变化
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- VB 检测文件变化 并获取变化的数据
- 针对文件目录内容变化的检测
- 突破磁盘低级检测实现文件隐藏
- UVa 10048: Audiophobia
- nginx加强安全模块
- hdu(1152)
- linux crontab 命令详解
- 解决 Spotlight 无法搜索移动硬盘的问题
- 检测磁盘文件是否发生变化
- POJ 1936 All in All(water)
- cocos 的CCScheduler模块
- 分享Mvc3+NInject+EF+LigerUI权限系统
- 为什么OGRE的选项窗口是空的
- 初识UIPageView
- [每日一题] OCP1z0-047 :2013-08-05 SELECT语句――列的表达式.....................................25
- hdu 4308
- exists 与not exists in 和not in用法