Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Тестовые примеры / ch7 / dirfile
.h #ifndef DIRFILE_H /* This is dirfile.h header */
#define DIRFILE_H
#include "filebase.h"
#include <dirent.h>
#include <string.h>
/* A class to encapsulate POSIX and UNIX directory files' properties */
class dirfile
{
DIR *dir_Ptr;
char *filename;
public:
dirfile(const char* fn) { dir_Ptr = opendir(fn);
filename = new char[strlen(fn)+1];
strcpy(filename,fn);
};
~dirfile() { if (dir_Ptr) close();
delete filename;
};
int close() {
return (dir_Ptr) ? closedir(dir_Ptr) : -1;
};
int create( const char* fn, mode_t prot)
{ return mkdir(fn,prot); };
int open(const char* fn) { dir_Ptr=opendir(fn);
return dir_Ptr ? 0 : -1;
};
int read(char* buf, int size)
{
struct dirent *dp = readdir(dir_Ptr);
if (dp)
strncpy(buf,dp->d_name,size);
return (dp)? strlen(dp->d_name) : 0;
};
off_t tellg() { return telldir(dir_Ptr); };
void seekg( off_t ofs ) { seekdir(dir_Ptr, ofs); };
int remove() { return rmdir(filename); };
};
#endif /* dirfile.h */