基於委託機制的(目錄)檔案遍歷

2021-06-07 01:10:21 字數 1930 閱讀 5837

這個示例程式基本實現了dir命令的行為,但是是使用了objectivec的委託機制,思想是不錯的,共享之

以後需要用到可以直接拿來用,因為委託機制真的很不錯

//

// 檔名:enumfile.h

// 工程名:enumfile

// 作 者:ccnyou

//#ifndef enumfile_h__

#define enumfile_h__

#include #include #include #include #ifndef _t

#define _t text

#endif

class enumfiledelegate

//發現檔案

virtual void didfoundfile(lpctstr pstrfilename){}

//即將進入目錄

virtual void willentrydirectory(lpctstr pstrdirectoryname){}

//已經進入目錄

virtual void didentrydirectory(lpctstr pstrdirectoryname){}

//詢問是否應該進入到目錄 true,false 忽略之

virtual bool shouldentrydirectory(lpctstr pstrdirectoryname)

};void enumdirectory(lpctstr pstrpath,enumfiledelegate *pdelegate);

#endif // enumfile_h__

//

// 檔名:enumfile.cpp

// 工程名:enumfile

// 作 者:ccnyou

//#include "stdafx.h"

#include "enumfile.h"

#include static bool isfilenamevalid(lpctstr pstrfilename)

if (lstrcmp(pstrfilename,_t("..")) == 0)

return true;

}void enumdirectory(lpctstr pstrpath,enumfiledelegate *pdelegate)} }

else

}while(findnextfile(hfindfile,&filedata) != null);

} setcurrentdirectory(strcurdir);

}

//

// 檔名:main.cpp

// 工程名:enumfile

// 作 者:ccnyou

//#include "stdafx.h"

#include #include #include "enumfile.h"

class mydelegate : public enumfiledelegate

void didfounddirectory(lpctstr pstrdirectoryname)

void didentrydirectory(lpctstr pstrdirectoryname)

void didfoundfile(lpctstr pstrfilename)

//去掉注釋,可以只遍歷當前目錄,而不進入子目錄

// bool shouldentrydirectory(lpctstr *pstrdirectoryname)

//

};int main(int argc, char* argv)

其中,stdafx.h 是工程自動生成的,如果需要沒有生成,可以自己手工建立乙個stdafx.h

python遍歷目錄檔案

直接上 os.walk import os from os.path import join,getsize for root,dirs,files in os.walk python lib email print root,consumes print sum getsize join root...

python 檔案目錄遍歷

import os path r f pycharmprojects basic gram 作業和習題 test def getallfileanddir path 獲取當前目錄下所有檔案及檔案目錄 filelist os.listdir path print filelist 遍歷filelist...

基於ACE實現C 目錄遍歷

目錄遍歷,在軟體程式設計中屬於常見的需求 如 病毒掃瞄 源 編輯 檔案比較。在 windows 環境,使用 findfirstfileex findnextfile 詳細情況可以參考 msdn 等檔案訪問函式,能夠實現目錄遍歷 在 posix 環境,可以使用 open dir 跨平台不是這裡討論的重...