#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;}