关闭

C代码:指定路径删除N天之前的日志

174人阅读 评论(0) 收藏 举报
分类:
#include <iostream>
#include <Windows.h>
#include <io.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include<direct.h>
#include <shlwapi.h>
#include <wchar.h>
#include <time.h>
using namespace std;
/*
1.)通过获取文件的创建时间与格林时间(1970)比较得到时间差(fData.time_creat);
2.) 获得现在的时间与格林时间比较得到时间差(mptr_currentSeconds);
3.) 计算两次的时间差得到时间间隔(diffSeconds);
4.)比较时间间隔与传入的参数时间,进行日志的删除与保留。
*/
//获取指定路径里的所有.log文件的创建时间
int DeleteFlogsByDates(string pathName,int timeinterval)//传入路径名和int型的时间间隔.

struct _finddata_t fData;
const int SECONDS_OF_DAY= 86400;       //计算一天的24h多少秒;
memset(&fData, 0, sizeof(fData));//将fData置零  
if (_chdir(pathName.c_str()) != 0) //_chdir函数设置当前目录  
{  
printf("chdir failed: %s\n",pathName);  
}  
intptr_t hFile=_findfirst("*.log",&fData);  //参数1:在给定路径里查找所有.log文件  
if(hFile == -1)//判断目录是否为空。 
{  
printf("_findfirst error!\n"); 
system("pause");
return false;  
}
//获取当前时间mptr_currentSeconds(以秒为单位);
long* mptr_currentSeconds = new long;//new *mptr_currentSeconds;
time((time_t *)mptr_currentSeconds);//获取当前时间
printf("current seconds from 1970 :%d\n", *mptr_currentSeconds);
do 
{
long diffSeconds = difftime(*mptr_currentSeconds, fData.time_create);
long a=timeinterval*SECONDS_OF_DAY;//将传入的参数转化为以秒为单位的形式
if (diffSeconds>a)//比较时间间隔与传入的参数时间
{
char filePath[MAX_PATH];  
memset(filePath,0,sizeof(filePath));  
strcpy_s(filePath,pathName.c_str());  
strcat_s(filePath,"\\");  
strcat_s(filePath,fData.name);  
remove(filePath);//删除操作
printf("remove file: %s\n",filePath);
}
printf("%d\n",a);
} while (_findnext(hFile,&fData)==0);
 system("pause");
return 0; 
}
int main()
{
DeleteFlogsByDates("e:\\logs",1);
return 0;
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:398次
    • 积分:25
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档