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结果:

网友评论