在实际的软件开发项目中,经常会有实现删除过期文件的需求。即要求程序能够自动删除多长时间之前生成的文件。本文提供了一个示例代码,为相关的开发工作提供了参考。
程序如下(本程序用makefile进行编译):
/**********************************************************************
* 版权所有 (C)2014, Zhou Zhaoxiong。
*
* 文件名称: TestFileDelete.c
* 内容摘要: 用于演示Linux下过期文件的删除
* 其它说明: 无
* 当前版本: V1.0
* 作 者: Zhou Zhaoxiong
* 完成日期: 20140811
*
* 版本 修改时间 修改人 修改内容
********************************************************************
* V1.0 20140811 周兆熊 创建
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 数据类型
typedef unsigned char UINT8;
typedef unsigned int UINT32;
typedef signed int INT32;
/*---------------------------------------------------------------
* 功能描述: 主函数
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 0-执行结束
* 其他说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------------
* 20140811 V1.0 Zhou Zhaoxiong 创建
-----------------------------------------------------------------*/
INT32 main()
{
UINT8 szCmdBuf[1024] = {0}; // 用于存放Linux命令
UINT8 szLocalFileSaveDir[1000] = {0}; // 用于存放本地目录
UINT32 iFileSaveDays = 10; // 文件保留天数, 可由配置项决定, 这里设为0
memcpy(szLocalFileSaveDir, "/home/zhouzx/TestDir", strlen("/home/zhouzx/TestDir")); // 文件的存放路径
// 注意该删除命令的格式
snprintf(szCmdBuf, sizeof(szCmdBuf) - 1, "find %s -name \"*.txt\" -ctime +%d -exec rm -f {} \\;", szLocalFileSaveDir, iFileSaveDays);
printf("Delete the file(s), exec: %s\n", szCmdBuf);
system(szCmdBuf); // 执行删除命令
return 0;
}
makefile文件内容如下:
TestFileDelete : TestFileDelete.c
gcc -c -g TestFileDelete.c
gcc -g -o release/TestFileDelete TestFileDelete.o
rm *.o
说明:
(1) 本文中的保留天数和文件存放目录都可以通过配置文件中的配置项来决定,这样可根据需要来灵活配置。
(2) 要严格按照“find”命令的语法来书写代码,否则该命令不起作用。有关该命令的具体语法规则,请上网查询。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)