📄 cbrowserdir.cpp
字号:
#include "CBrowserDir.h"
#include <direct.h>
#include <io.h>
using namespace std;
// 查找并记录目录中的所有下一级目录中的文件
bool CBrowserDir::BrowserDir(const char * dir) {
//init vectors
m_vSubDirName.clear();
map< string, vector< string > >::iterator iter = m_vFileName.begin();
while( iter != m_vFileName.end() ) {
iter->second.clear();
iter++;
}
m_vFileName.clear();
char oldir[_MAX_PATH];
if( NULL == _getcwd( oldir, _MAX_PATH ) )
return false;
_chdir(dir);
long hFile;
_finddata_t fileinfo;
if ((hFile=_findfirst("*.*",&fileinfo)) != -1) {
do {
//检查是不是目录
//如果是,再检查是不是 . 或 ..
//如果不是,进行处理
if ((fileinfo.attrib & _A_SUBDIR)) {
if (strcmp(fileinfo.name,".") != 0 && strcmp
(fileinfo.name,"..") != 0) {
char subdir[_MAX_PATH];
strcpy(subdir,dir);
strcat(subdir,"/");
strcat(subdir,fileinfo.name);
strcat(subdir,"/");
m_vSubDirName.push_back(subdir);
ProcessDir(subdir);
}
}
} while(_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}
_chdir( oldir );
return true;
}
// 查找并记录目录中的所有文件
bool CBrowserDir::ProcessDir(const char *dir) {
_chdir(dir);
long hFile;
_finddata_t fileinfo;
vector<string> vFileName;
if ((hFile=_findfirst("*.*",&fileinfo)) != -1) {
do {
//检查是不是目录
//如果不是,则进行处理
if (!(fileinfo.attrib & _A_SUBDIR)) {
char pathname[_MAX_PATH];
strcpy(pathname,dir);
strcat(pathname,fileinfo.name);
vFileName.push_back( pathname );
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
m_vFileName[dir] = vFileName;
}
return true;
}
bool CBrowserDir::WriteDirListFile(const char *filename) {
if( NULL == filename )
return false;
FILE * fout;
fout = fopen(filename, "wt");
if( NULL == fout )
return false;
map< string, vector< string > >::iterator iter = m_vFileName.begin();
while( iter != m_vFileName.end() ) {
vector< string >::iterator iterFile = iter->second.begin();
while( iterFile != iter->second.end() ) {
fprintf(fout, "%s\n", (*iterFile).c_str() );
iterFile++;
}
iter++;
}
fclose( fout );
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -