您的位置:首页 > 运维架构 > Linux

简单的linux下的文件以及目录操作封装

2008-04-27 22:28 633 查看

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


}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息