通过定时器删除指定路径下的文件
1.场景:
手机App端签名生成base64格式的图片上传到后台,后台将格式转换为file,然后上传到oss。以后所有的访问都通过oss访问,所以后台存储的图片就没用了,所以设置定时器将其批量删除。
2.环境
后台的框架为jfinal,jdk1.8。
3.配置定时器
maven依赖:
<dependency>
<groupId>cn.dreampie</groupId>
<artifactId>jfinal-quartz</artifactId>
<version>0.2</version>
</dependency>
配置定时任务配置文件jobs.properties:
job.k_d.class = com.dlhz.job.DeleteTemporaryFile // 自己定时任务的处理类
job.k_d.group=file
job.k_d.id=1
job.k_d.cron= 0 10 0 * * ? // 设置每天晚上十二点十分执行一次
job.k_d.enable=true
定时任务处理类
public class DeleteTemporaryFile implements Job{
private static final Logger logger = Logger.getLogger(DeleteTemporaryFile.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
logger.debug("定时任务:删除临时文件开始");
boolean flag = DeleteTemporaryFileService.deleteFile(PathKit.getWebRootPath()+"\\img");
if(!flag) {
logger.debug("定时任务:删除临时文件==>执行失败");return;
}
logger.debug("定时任务:删除临时文件结束==>执行成功");
} catch (Exception e) {
logger.error("定时任务:删除临时文件异常",e);
}
}
}
删除文件的方法
public static boolean deleteFile(String path) {
File file = new File(path);
if (!file.exists()) {
return false;
}
if (!file.isDirectory()) {
return false;
}
String[] tempList = file.list();
File temp = null;
int success_num = 0;
int false_num = 0;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
logger.debug("正在删除文件:"+temp.getName());
boolean is_success = temp.delete();
if(is_success) {
success_num += 1;
}else{
false_num += 1;
}
}
}
logger.debug("/******************************************/");
logger.debug("/***成功删除临时文件:"+success_num+"个,**********/");
logger.debug("/***失败删除临时文件:"+false_num+"个,************/");
logger.debug("/******************************************/");
return true;
配置config文件
/**
* 在jfinal配置文件中配置定时任务插件
*/
QuartzPlugin quartzPlugin = new QuartzPlugin();
quartzPlugin.setJobs("jobs.properties");
me.add(quartzPlugin);
4.运行测试
2019-01-18 11:15:00,010 - DEBUG - 定时任务:删除临时文件开始
2019-01-18 11:15:00,011 - DEBUG - 正在删除文件:20190118111428.jpg
2019-01-18 11:15:00,012 - DEBUG - 正在删除文件:20190118111430.jpg
2019-01-18 11:15:00,013 - DEBUG - 正在删除文件:20190118111431.jpg
2019-01-18 11:15:00,014 - DEBUG - 正在删除文件:20190118111432.jpg
2019-01-18 11:15:00,015 - DEBUG - /******************************************/
2019-01-18 11:15:00,015 - DEBUG - /***成功删除临时文件:4个,**********/
2019-01-18 11:15:00,016 - DEBUG - /***失败删除临时文件:0个,************/
2019-01-18 11:15:00,016 - DEBUG - /******************************************/
2019-01-18 11:15:00,016 - DEBUG - 定时任务:删除临时文件结束==>执行成功
5.结束
至此定时删除文件就写好了;
参考文档:https://www.cnblogs.com/kitty-zhou/p/5439493.html
感谢您的阅读,如有不足之处请指正,谢谢!