#include#include #include #include #include using namespace std;void finddir(const string& name,_finddata_t* fl){ vector str; long hd=_findfirst(string(name).append("*.*").c_str(),fl); if(hd==-1){_findclose(hd);return;} do { if(fl->attrib&_A_SUBDIR && (!strcmp(fl->name,".")||!strcmp(fl->name,"..")))continue; if(fl->attrib&_A_SUBDIR){cout< name).append("\\").c_str()< name).append("\\"));continue;} cout< name<
多线程版本
#include "stdafx.h"#include// std::cout#include // std::atomic#include // std::thread#include // std::vector#include #include #include #include #include #include #include using namespace std;#define THREAD_COUNT 32vector directory;mutex mtx;bitset bst;atomic file_count;atomic folder_count;void print_a_dir(string dir){ _finddata_t* fd=new _finddata_t; long hdl=_findfirst(string(dir).append("*.*").c_str(),fd); if(hdl==-1){_findclose(hdl);return;} do { if(fd->attrib&_A_SUBDIR && (fd->name)[0]=='.')continue; if(fd->attrib&_A_SUBDIR){ string temp(dir+fd->name+"\\");folder_count++;mtx.lock();directory.push_back(temp);mtx.unlock();continue;} file_count++; //cout< < name< v_thread; directory.push_back("D:\\Documents\\"); cout< <