监测指定路径下的文件创建活动

来源:互联网 发布:域名name server 编辑:程序博客网 时间:2024/05/22 06:21

头文件

#ifndef MYFSO_H#define MYFSO_H

// INCLUDES#include <e32base.h> // for CActive

// FORWARD DECLARATIONSclass RFs;

// CLASS DECLARATION

/***  CMyFSO  container control class.*  */class CMyFSO : public CActive    {    public: // public interface        class MObserver            {        public:            virtual void OnChangeL(TInt aError,const TDesC& aFileName)=0;            };

    public: // constructor and destructor        static CMyFSO* NewL(MObserver& aObserver);        ~CMyFSO();  void  SetWatchDir(const TDesC& aDir); // 设置检测的文件路径

    public: // new methods        void NotifyAllChanges();

    protected: // from CActive        void DoCancel();        void RunL();

    private: // constructors        CMyFSO(MObserver& aObserver);        void ConstructL();

    private: // member variables        MObserver& iObserver;        RFs& iFs;  TFileName iWatchDir;    };

#endif

// End of File

源文件:

// INCLUDE FILES#include <f32file.h>#include <coemain.h>#include <pathinfo.h>

#include "MyFSO.h"

 

// ================= MEMBER FUNCTIONS =======================

CMyFSO* CMyFSO::NewL(MObserver& aObserver)    {    CMyFSO* myFso = new(ELeave) CMyFSO(aObserver);    CleanupStack::PushL(myFso);    myFso->ConstructL();    CleanupStack::Pop();    return myFso;    }

CMyFSO::~CMyFSO()    {    Cancel();    }

void CMyFSO::NotifyAllChanges()    {    Cancel();    //iFs.NotifyChange(ENotifyAll, iStatus); //iWatchDir=PathInfo::MemoryCardRootPath(); //iWatchDir.Append(PathInfo::ImagesPath());    iFs.NotifyChange(ENotifyWrite,iStatus,iWatchDir); SetActive();    }

void CMyFSO::DoCancel()    {    iFs.NotifyChangeCancel();    }

void CMyFSO::RunL()    {    iObserver.OnChangeL(iStatus.Int(),iWatchDir);    }

CMyFSO::CMyFSO(MObserver& aObserver) : CActive(CActive::EPriorityStandard),     iObserver(aObserver), iFs(CCoeEnv::Static()->FsSession())    {    }

void CMyFSO::ConstructL()    {    CActiveScheduler::Add(this);    }

void CMyFSO::SetWatchDir(const TDesC& aDir){ iWatchDir=aDir;

}

// End of File