定时删除指定文件夹下的文件

通过定时器删除指定路径下的文件

1.场景:

手机App端签名生成base64格式的图片上传到后台,后台将格式转换为file,然后上传到oss。以后所有的访问都通过oss访问,所以后台存储的图片就没用了,所以设置定时器将其批量删除。

2.环境

后台的框架为jfinal,jdk1.8。

3.配置定时器

maven依赖:

		
			cn.dreampie
			jfinal-quartz
			0.2
		

配置定时任务配置文件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

感谢您的阅读,如有不足之处请指正,谢谢!

你可能感兴趣的:(学习)