wxWidgets - wxDir 遍历文件
一、遍历单个目录下的文件 - 不进入子目录
1 #include2 #include "wx/filefn.h" 3 #include "wx/dir.h" 4 5 int main() 6 { 7 wxDir dir( wxGetCwd() ); //为枚举打开当前目录 8 9 if ( !dir.IsOpened() ) //检测是否成功打开10 return 0;11 12 puts("枚举当前目录下的文件:");13 14 wxString filename;15 16 bool cont = dir.GetFirst( &filename );17 while ( cont )18 {19 printf("%s\n", filename.c_str());20 cont = dir.GetNext(&filename);21 }22 23 return 0;24 }
二、遍历指定目录下所有文件 - 进入子目录
#include#include "wx/filefn.h" #include "wx/dir.h" int main() { wxDir dir( _T("D:\\Project\\wxWidgets\\wxDocToZh") ); if ( !dir.IsOpened() ) return 0; wxArrayString files; dir.GetAllFiles( _T("D:\\Project\\wxWidgets\\wxDocToZh"), &files ); //获取 D:\\Project\\wxWidgets\\wxDocToZh 下所有文件的完整路径到 files unsigned int i = 0; for( i; i < files.GetCount(); i++ ) puts( files[i] ); return 0; }
三、通过 wxDir::Traverse 实现遍历目录下所有文件 - 进入子目录
1 #include2 #include "wx/filefn.h" 3 #include "wx/dir.h" 4 5 class wxDirTraverserSimple : public wxDirTraverser //继承wxDirTraverser类 6 { 7 public: 8 wxDirTraverserSimple(wxArrayString& files) : m_files(files) { } 9 10 virtual wxDirTraverseResult OnFile(const wxString& filename)11 {12 m_files.Add(filename);13 return wxDIR_CONTINUE;14 }15 16 virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dirname))17 {18 return wxDIR_CONTINUE;19 }20 21 private:22 wxArrayString& m_files;23 };24 25 26 int main()27 {28 wxDir dir( _T("D:\\Project\\wxWidgets\\wxDocToZh") ); //为枚举打开当前目录29 30 if ( !dir.IsOpened() ) //检测是否成功打开31 return 0;32 33 wxArrayString files;34 wxDirTraverserSimple traverser(files);35 36 dir.Traverse(traverser);37 38 unsigned int i = 0;39 for(i; i < files.GetCount(); i++)40 puts( files[i] );41 42 return 0;43 }
四、其他操作
wxDir::wxDir wxDir::~wxDir wxDir::Exists //检测目录是否存在 wxDir::GetAllFiles wxDir::FindFirst wxDir::GetFirst wxDir::GetName wxDir::GetNext wxDir::GetTotalSize //获取目录大小 wxDir::HasFiles //目录是否存在文件 wxDir::HasSubDirs //是否存在子目录 wxDir::IsOpened wxDir::Open wxDir::Traverse
-------------------- wid, 2012.03.01