// .h #pragma once #include < vector > // 封装一个对磁盘,文件夹,文件进行遍历的类 class CGetFileOrFolder ... {protected: //记录磁盘的串 std::vector<CString> m_strDisk; //记录文件夹的串 std::vector<CString> m_strFolder; //记录文件的串 std::vector<CString> m_strFile;private: void get_all_disk();public: //磁盘的枚举 int get_disk_count(); CString get_one_disk(int nIndex); //文件夹的枚举 bool search_folder_file(CString path); int get_folder_count(); CString get_one_folder(int nIndex); //文件的枚举 int get_file_count(); CString get_one_file(int nIndex);public: CGetFileOrFolder(void); ~CGetFileOrFolder(void);} ; // 使用方法 // 磁盘: /**/ /* CGetFileOrFolder g; int n = g.get_disk_count(); for(int i = 0; i < n; i++) AfxMessageBox(g.get_one_disk(i));*/ // 文件(文件夹) /**/ /* CGetFileOrFolder g; g.search_folder_file(g.get_one_disk(1)); for(int i = 0; i < g.get_file_count(); i++) AfxMessageBox(g.get_one_file(i));*/ // .cpp // 遍历磁盘的类 #include " StdAfx.h " #include " .getfileorfolder.h " CGetFileOrFolder::CGetFileOrFolder( void ) ... {} CGetFileOrFolder:: ~ CGetFileOrFolder( void ) ... {} void CGetFileOrFolder::get_all_disk() ... { CString str; char buf[26*4+1]; DWORD n = GetLogicalDriveStrings(100,buf); for(int i = 0; i < (int)n; i+=4) ...{ str.Format("%c%c",buf[i],buf[i+1]); this->m_strDisk.push_back(str); }} int CGetFileOrFolder::get_disk_count() ... { if(this->m_strDisk.empty()) this->get_all_disk(); return (int)this->m_strDisk.size();} CString CGetFileOrFolder::get_one_disk( int nIndex) ... { int n = this->get_disk_count(); if(nIndex >= n) return _T(""); return this->m_strDisk[nIndex];} // 参数path必须以 / 结束 // 找到指定 目录的文件夹,文件,将他们信息存入,map中 bool CGetFileOrFolder::search_folder_file(CString path) ... { if(path == _T("")) return true; CFileFind mysearch; int n_eof=mysearch.FindFile((LPCTSTR)(path+"*.*")); this->m_strFile.clear(); this->m_strFolder.clear(); while(n_eof) ...{ n_eof = mysearch.FindNextFile(); // not a directory if(!mysearch.IsDirectory()) ...{ this->m_strFile.push_back(mysearch.GetFileName()); }//if(!mysearch.IsDirectory()) else ...{ CString name=mysearch.GetFileTitle(); if(!mysearch.IsDots()) this->m_strFolder.push_back(mysearch.GetFileName()); }//else if(!mysearch.IsDirectory()) }//while(!n_eof) mysearch.Close(); return true;} int CGetFileOrFolder::get_folder_count() ... { return (int)this->m_strFolder.size();} CString CGetFileOrFolder::get_one_folder( int nIndex) ... { int n = this->get_folder_count(); if(nIndex >= n) return _T(""); return this->m_strFolder[nIndex];} int CGetFileOrFolder::get_file_count() ... { return (int)this->m_strFile.size();} CString CGetFileOrFolder::get_one_file( int nIndex) ... { int n = this->get_file_count(); if(nIndex >= n) return _T(""); return this->m_strFile[nIndex];} 相关文章: 判段点是否在多边形内 VC中对office的操作 实现树结构的类CTree