#ifndef LINUXIO_H #define LINUXIO_H #include < vector > #include < string > enum FILETYPE ... {ZFQ_DIR,ZFQ_FILE} ;typedef struct ... { std::string name; FILETYPE type;} DirItem; class LinuxIO ... {public: LinuxIO(void);public: ~LinuxIO(void);public: static bool Dir(char* path,std::vector<DirItem>& list); static bool MkDir(char* path); static bool Remove(char* path); static bool RmDir(char* path);} ; #endif #include " LinuxIO.h " #include < dirent.h > #include < stdio.h > #include < unistd.h > #include < fcntl.h > #include < limits.h > LinuxIO::LinuxIO( void ) ... {} LinuxIO:: ~ LinuxIO( void ) ... {} bool LinuxIO::Dir( char * path,std::vector < DirItem >& list ) ... { if(access(path,0)==-1) return false; struct dirent* ent = NULL; DIR *pDir; pDir=opendir(path); while ((ent=readdir(pDir))!=NULL) ...{ if( strcmp(ent->d_name, ".")==0 || strcmp(ent->d_name, "..")==0 ) ...{ continue; } if (ent->d_type==8) ...{ DirItem temp; temp.name=(std::string)ent->d_name; temp.type=ZFQ_FILE; list.push_back(temp); } else ...{ DirItem temp; temp.name=(std::string)ent->d_name; temp.type=ZFQ_DIR; list.push_back(temp); } } return true;} bool LinuxIO::MkDir( char * path ) ... { if(mkdir(path,S_IRWXU)==0) return true; else return false;} bool LinuxIO::Remove( char * path ) ... { if(remove(path)==0) return true; else return false;} bool LinuxIO::RmDir( char * path ) ... { if(access(path,0)==-1) return false; std::vector<DirItem> list; Dir(path,list); std::vector<DirItem> fullnamelist; char namebuffer[PATH_MAX]; strcpy(namebuffer,path); strcat(namebuffer,"/"); int i; for(i=0;i<(int)list.size();i++) ...{ char tempbuffer[PATH_MAX]; strcpy(tempbuffer,namebuffer); strcat(tempbuffer,list[i].name.c_str()); if(list[i].type==ZFQ_FILE) Remove(tempbuffer); else RmDir(tempbuffer); } rmdir(path); return true;}