美文网首页
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