美文网首页
Cron表达式与Spring定时任务之定时删除过期文件

Cron表达式与Spring定时任务之定时删除过期文件

作者: writeanewworld | 来源:发表于2018-09-29 11:59 被阅读0次

1.定时删除过期的excel文件

(1)、sysrem.properties配置文件中的内容:
manage.export.clean.file=1 * * * * ?
(2)、删除的service
@Component
public class DeleteExcelJob {

@Resource
private ExportService exportService;

private static final Logger LOG = LoggerFactory.getLogger(ExportServiceImpl.class);

@Value("${manage.export.file.folder}")
private String excelPath;

@Scheduled(cron = "${manage.export.clean.file}")
public void scheduled(){
    LOG.info("---------------删除开始---------------");
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 7);
    Date date = calendar.getTime();
    ExcelExportBOResult result = exportService.deleteByModifyDate(date);
    if(result==null||result.getStatus()!= ResultConstant.CODE.SUCCESS){
        LOG.info("删除t_excel_export_info表失败");
    }

    long delTime = date.getTime();

    File folder = new File(excelPath);
    File[] files = folder.listFiles();
    for(File file:files){
        long lastModified = file.lastModified();
        if(lastModified<date.getTime()){
            file.delete();
        }
    }

    LOG.info("---------------删除结束---------------");
}
}

 


 ---知识总结---


(1)、Calendar
   Calendar.getInstance();
   static Calendar getInstance() 使用默认时区和语言环境这种方法获得一个日历。

(2)、java中Calendar.getTime()与 new Date()的区别:
   Calendar.getInstance()是获取一个Calendar 对象并可以进行时间的计算,时区的指定new Date()是创建 
   了一个date对象,默认是utc格式的。

二者可以相互转化:
Calendar calendar = Calendar.getInstance();
// 从一个 Calendar 对象中获取 Date 对象
Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,
// Calendar/GregorianCalendar 没有[构造函数]可以接受 Date 对象
// 所以我们必需先获得一个实例,然后设置 Date 对象
calendar.setTime(date);

(3)、getInstance()
 单例模式,只初始化一次。比如jdbc中的DBConnection.getInstance(); 

(4)、File简单例子:

 String filePath = "D://";       
  File folder = new File(filePath);
  System.out.println("文件路径:" + folder);
  File[] files = folder.listFiles();
  System.out.println("该路径下文件夹的个数:" + files.length);
  for(File file : files) {
      System.out.println(file.getName());
  }

示例4File结果:


image.png

相关文章

网友评论

      本文标题:Cron表达式与Spring定时任务之定时删除过期文件

      本文链接:https://www.haomeiwen.com/subject/rjdmoftx.html