何监测一个文件夹中是否新增了图片[
我的设计要求是这样的:
有一个超速抓拍系统,由于抓拍的速度比较快,如果我每抓拍一次马上进行车牌的识别,由于我的算法比较烂,识别速度较慢,有些情况下跟不上抓拍的速度。因此我想先把抓拍的保存在一个文件夹中,单独创建一个线程进行车牌识别,当这个文件夹中新增了图片文件,我就对新增的进行识别处理。
可是不知道怎么实现这种方法。注:有可能一下子抓拍了两张到三张,我要一张一张的进行处理(由于系统限制:在识别某一张图片的时候,不能同时识别另一张,需要等到当前这张识别完之后才行)。
[解决办法]
看这个
[解决办法]
给你一个CFileSystemWatcher类的实现,仔细看一下就明白了,不难的。
- C/C++ code
#pragma once#include "windows.h"#include <vector>using namespace std;#define MAX_BUF_LEN 100class CFileSystemWatcher{ typedef struct _FILEDATA { HANDLE hFile; TCHAR szFolderName[MAX_PATH]; TCHAR szOldFile[MAX_PATH]; //仅使用在显示改变时 TCHAR szNewFile[MAX_PATH]; //仅使用在显示改变时 HANDLE hEvent; HANDLE hThread; DWORD dwThreadID; }FILEDATA,*PFILEDATA;public: CFileSystemWatcher(); ~CFileSystemWatcher(void);public: static DWORD CALLBACK WorkProc(LPVOID lp); HRESULT Work(); HRESULT AddFile(LPCTSTR lpFile); //开启一个线程启动监听 static VOID CALLBACK FileIOCompletionRoutine(DWORD dwErrorCode,DWORD dwNumberOfBytesTransfered,LPOVERLAPPED lpOverlapped); HRESULT Stop(); //停止所有线程,以例结束监视 void ShowFileChange(DWORD dwAction,const FILEDATA& fileData);private: vector<FILEDATA> m_pfileDataList; int m_fileCount; //CRITICAL_SECTION m_cs; };