删除历史日志的一个API

bool DeleteOldFiles(const char* strFolder, const char* strPrefix, bool is_recursion, UINT32 ulMinDateTime, UINT32 ulMaxDateTime)
{
HANDLE hFind = NULL;
WIN32_FIND_DATAA findFileData;
std::string strFindFolder = strFolder;
//转换成大写的进行比较
std::string strUpperPrefix = str_toupper(std::string(strPrefix));
std::string strUpperFileName(MAX_PATH, '\0');
std::string strTempName(MAX_PATH, '\0'); if (strFindFolder[strFindFolder.length() - ] == '\\') {
strFindFolder.append("*.*");
} else {
strFindFolder.append("\\*.*");
} hFind = FindFirstFileA(strFindFolder.c_str(), &findFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
do{
if ((findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
if (is_recursion){
if (( == strcmp(".", findFileData.cFileName)) || ( == strcmp("..", findFileData.cFileName)))
{
continue;
} sprintf_s(&strTempName[], MAX_PATH - , "%s\\%s", strFolder, findFileData.cFileName); DeleteOldFiles(strTempName.c_str(), strPrefix, is_recursion, ulMinDateTime, ulMaxDateTime);
}
} else {
//判断文件名是否相同的前缀
strUpperFileName = str_toupper(std::string(findFileData.cFileName));
//有相同的前缀
if (strcmp(strUpperFileName.c_str(), strUpperPrefix.c_str()) >= ) {
//取当前指定位置的数值,转换成整数
UINT32 ulCurrDateTime = atoi(&strUpperFileName[strUpperPrefix.length()]);
if ((ulCurrDateTime >= ulMinDateTime) && (ulCurrDateTime <= ulMaxDateTime)) {
//组合文件名
sprintf_s(&strTempName[], MAX_PATH - , "%s\\%s", strFolder, findFileData.cFileName);
//删除文件
DeleteFileA(strTempName.c_str());
}
}
}
} while (FindNextFileA(hFind, &findFileData));
::FindClose(hFind);
hFind = NULL; return true;
}

最新文章

  1. csv to splite db form
  2. c#制作一个屏幕保护程序
  3. 针对bootstrap内联单选框input与文字不能居中对齐的解决办法
  4. Life is hard
  5. scala学习之第三天:数组的特性与使用技巧
  6. 一步步学习ASP.NET MVC3 (3)——Razor(1)
  7. UVA 10254 - The Priest Mathematician (dp | 汉诺塔 | 找规律 | 大数)
  8. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
  9. AWK用法入门详解
  10. js实现360度图片旋转
  11. C# 格式化字符串
  12. JAVA ==号和equals()的区别
  13. JS的javascript:void(0)用法
  14. QMD ST表 倍增
  15. 译: 3. RabbitMQ Spring AMQP 之 Publish/Subscribe 发布和订阅
  16. php中0与’0’的区别
  17. apache 运行一段时间出现错误
  18. C# Socket模拟发送接收
  19. 图解Python可以做些什么
  20. PAT——1014. 福尔摩斯的约会

热门文章

  1. rabitMQ-centos7安装
  2. 事件流程以及dom2级事件绑定
  3. nginx之热部署,以及版本回滚
  4. 028-实现阿里云ESC多FLAT网络
  5. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)
  6. docker安装MySQL5.7示例!!坑
  7. css多种方式实现双飞翼布局
  8. Apache+Mysql+PHP 套件
  9. SpringCloud学习系列-Eureka服务注册与发现(4)
  10. mysql DEFAULT约束 语法