在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;
}
浙公网安备 33010602011771号