fuopen

 

在unix/linux下对目录的一个操作

最近老板要求把之前做Graduate procruste analysis的代码update一下,顺便就把之前对linux系统下文件目录的操作重新整理了,根据目录是否存在,去生成或者读取目录。源代码如下:

//FileSys.h

#ifndef _FILESYS_H_

#define _FILESYS_H_

#include<dirent.h>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<errno.h>

#include<strings.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<unistd.h>

#include<vector>

#include<string>

#undef max

#undef min

usingnamespace std;

class FileSys{

private:

      char* filedir;

      int  filesize;

      vector<string> files;

public:

      FileSys(const char*);

      ~FileSys();

      bool emptyfile();

  string operator[](int)const;

  int getsize();

      void getfilename(string);

  string Dirdata();

};

#endif

 //FileSys.cpp

 

#include "FileSys.h"

 

#include<iostream>

 

usingnamespace std;

 

FileSys::FileSys(const char* direction){

 

  struct stat statbuf;

 

  struct dirent *entry;

 

  DIR* dp;

 

  filedir = new char[strlen(direction)+1];

 

  memcpy(filedir,direction, (strlen(direction)+1)*sizeof(char));

 

  if(stat(filedir,&statbuf)<0){

 

    if(mkdir(filedir,S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH)<0){

 

    perror("Failed to creat a folder!");

 

    exit(-1);

 

    }

 

  }

 

  dp = opendir(filedir);

 

  if(dp == NULL){

 

    perror("open directory is failed");

 

    filesize = 0;

 

  }

 

  else{

 

    while((entry = readdir(dp))){

 

      if(entry->d_name[0]!='.'){

 

      string tempfile(entry->d_name);

 

      files.push_back(tempfile);

 

      } 

 

    }

 

    filesize = files.size();

 

  }

 

  closedir(dp);

 

}

 

FileSys::~FileSys(){

 

}

 

bool FileSys::emptyfile(){

 

  return (filesize==0);

 

}

 

string FileSys::operator [](int index)const{

 

    return files[index];

 

}

 

int FileSys::getsize(){

 

    return filesize;

 

 

void FileSys::getfilename(string fin){

 

  cout<<fin;

 

}

 

string FileSys::Dirdata(){

 

  string s(filedir);

 

  return s;

 

}

 

 

 

posted on 2012-04-17 09:27  fuopen  阅读(167)  评论(0)    收藏  举报

导航