#include <iostream>
#include <dirent.h>
#include <cstring>
#include <sys/stat.h>
static int RemoveFile(const char* filename ) {
struct stat buf;
int result = stat(filename, &buf);
if (result != 0) {
perror("Problem getting information");
switch (errno) {
case ENOENT:
printf("File %s not found.\n", filename);
break;
case EINVAL:
printf("Invalid parameter to _stat.\n");
break;
default:
/* Should never be reached. */
printf("Unexpected error in _stat.\n");
}
return -1;
}
printf("File size : %ld\n", buf.st_size);
printf("Drive : %c:\n", buf.st_dev + 'A');
time_t t;
tzset(); /*tzset()*/
t = time(NULL);
if ((t - buf.st_mtime) > 604800)//604800是7天的秒数,下面是删除超过7天的文件
{
remove(filename);
printf("remove file : %s \n", filename);
}
return 0;
}
static int find_directory(const char *dirname){
DIR *dir;
dir = opendir(dirname);
if(dir == NULL){
printf ("Cannot open directory %s\n", dirname);
return -1;
}
struct dirent *dp;
while ((dp = readdir (dir)) != NULL) {//这里返回的是当前目录.
if(strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0){
continue;
}
if(dp->d_type == DT_REG){
std::string path = dirname;
path.append("/").append(dp->d_name);
RemoveFile(path.c_str());
}
}
return 0;
}
int main()
{
find_directory(".");
return 0;
}
06-19
1108
06-17
601
04-25
267
07-05
5万+