[代码分享] wxWidgets - wxDir 遍历文件
2013-03-01 14:25 wid 阅读(2536) 评论(0) 编辑 收藏 举报wxWidgets - wxDir 遍历文件
一、遍历单个目录下的文件 - 不进入子目录
1 #include <stdio.h> 2 #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 <stdio.h> #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 #include <stdio.h> 2 #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
参见手册 wxWidgets - wxDir:
笔者译: [译] wxWidgets - wxDir
官方原文: http://docs.wxwidgets.org/2.8/wx_wxdir.html
--------------------
wid, 2012.03.01