c++ Windows下超时文件删除

编程入门 行业动态 更新时间:2024-10-05 03:25:11

c++ Windows下超时<a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件删除"/>

c++ Windows下超时文件删除

操作步骤

  1. 取得某个目录下面所有文件

  2. 取得文件的创建日期

  3. 取得当前日期跟其创建的日期差

  4. 删除文件

获取文件的创建时间

    int iresult;struct _stat buf;iresult = _stat("D:\\test.txt", &buf);printf("seconds of file create-time from 1970 :%d\n", buf.st_atime);__time64_t* m_seconds = &buf.st_ctime;//create 文件创建时间   注:buf.st_atime:访问时间  buf.st_mtime:修改时间struct tm* m_localTime = localtime(m_seconds);//转换成 标准时间格式printf("file ctime time : %d:%d:%d\n", m_localTime->tm_hour, m_localTime->tm_min, m_localTime->tm_sec);

获取当前时间

    __time64_t* mptr_currentSeconds = new __time64_t;time(mptr_currentSeconds);printf("current seconds from 1970 :%d\n", *mptr_currentSeconds);m_localTime = localtime(mptr_currentSeconds);printf("current Local time : %d:%d:%d\n", m_localTime->tm_hour, m_localTime->tm_min, m_localTime->tm_sec);

获取文件列表下所有文件

void getFiles(string path,__time64_t currentTime)
{//文件句柄  long   hFile = 0;//文件信息  struct _finddata_t fileinfo;string p;if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1){do{//如果是目录,迭代之  //如果不是,加入列表  if ((fileinfo.attrib &  _A_SUBDIR)){if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(p.assign(path).append("\\").append(fileinfo.name),currentTime);}else{int iresult;struct _stat buf;iresult = _stat(p.assign(path).append("\\").append(fileinfo.name).c_str(), &buf);cout << "currentTime" << currentTime << "   " << fileinfo.name << "   " << buf.st_mtime << endl;//打印文件的修改时间if ((currentTime-buf.st_atime)>12000){//这里可以对超时文件进行操作}}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}

时间结构体与函数参考

//<sys/stat.h>struct stat {dev_t      st_dev;    /* device inode resides on */ino_t      st_ino;    /* inode's number */mode_t     st_mode;   /* inode's mode */nlink_t    st_nlink;  /* number of hard links to the file */uid_t      st_uid;    /* user ID of owner */gid_t      st_gid;    /* group ID of owner */dev_t      st_rdev;   /* device type, for special file inode */struct timespec st_atimespec;  /* time of last access */struct timespec st_mtimespec;  /* time of last data modification */struct timespec st_ctimespec;  /* time of last file status change */off_t      st_size;   /* file size, in bytes */int64_t    st_blocks; /* blocks allocated for file */u_int32_t  st_blksize;/* optimal file sys I/O ops blocksize */u_int32_t  st_flags;  /* user defined flags for file */u_int32_t  st_gen;    /* file generation number */};

时间的转换

struct tm                                                     
{                                                                int tm_sec; /*秒,0-59*/                               int tm_min; /*分,0-59*/                               int tm_hour; /*时,0-23*/                              int tm_mday; /*天数,1-31*/                          int tm_mon; /*月数,0-11*/                           int tm_year; /*自1900的年数*/                     int tm_wday; /*自星期日的天数0-6*/             int tm_yday; /*自1月1日起的天数,0-365*/      int tm_isdst; /*是否采用夏时制,采用为正数*/   
}                                                                

日期贮存结构date

struct date                              
{                                            int da_year; /*自1900的年数*/ char da_day; /*天数*/             char da_mon; /*月数 1=Jan*/ 
}                                           

时间贮存结构time

struct time                                 
{                                              unsigned char ti_min; /*分钟*/    unsigned char ti_hour; /*小时*/  unsigned char ti_hund;               unsigned char ti_sec; /*秒*/       }
char *ctime(long *clock)
本函数把clock所指的时间(如由函time返回的时间)转换成数下列格式的字符串:
Mon Nov 21 11:31:54 1983n
char asctime(struct tm *tm)
本函数把指定的tm结构类的时间转换成下列格式的字符串:
Mon Nov 21 11:31:54 1983n
double difftime(time_t time2,time_t time1)
计算结构time2和time1之间的时间差距(以秒为单位)
struct tm *gmtime(long *clock)
本函数把clock所指的时间(如由函数time返回的时间)转换成格林威治时间,并以tm结构形式返回
struct tm *localtime(long *clock)
本函数把clock所指的时间(如函数time返回的时间)转换成当地标准时间,并以tm结构形式返回
void tzset()
本函数提供了对UNIX操作系统的兼容性
long dostounix(struct date *dateptr,struct time *timeptr)
本函数将dateptr所指的日期,timeptr所指的时间转换成UNIX格式, 并返回自格林威治时间1970年1月1日凌晨起到现在的秒数
void unixtodos(long utime,struct date *dateptr,struct time *timeptr)
本函数将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成DOS格式并保存于用户所指的结构dateptr和timeptr中
void getdate(struct date *dateblk)
本函数将计算机内的日期写入结构dateblk中以供用户使用
void setdate(struct date *dateblk)
本函数将计算机内的日期改成由结构dateblk所指定的日期
void gettime(struct time *timep)
本函数将计算机内的时间写入结构timep中, 以供用户使用
void settime(struct time *timep)
本函数将计算机内的时间改为由结构timep所指的时间
long time(long *tloc)
本函数给出自格林威治时间1970年1月1日凌晨至现在所经过的秒数,并将该值存于tloc所指的单元中.
int stime(long *tp)本函数将tp所指的时间(例如由time所返回的时间)写入计算机中.

参考网址

更多推荐

c++ Windows下超时文件删除

本文发布于:2024-02-13 20:53:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760514.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   Windows

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!