In a project, it is often necessary to automatically and regularly clean up some expired files. In fact, Java implementation is quite simple. There are two core parts, one is timing task, and the other is recursive deletion of files. However, the premise is that your files are placed in a folder named "2018-12-05", and the core code is directly displayed below:
1. Delete files recursively
/** * Recursively delete all files under the folder * @param file */ public static void deleteFile(File file) { if (file.isDirectory()) { //Recursively delete all files under the folder File[] files = file.listFiles(); for (File f : files) { deleteFile(f); } //Delete folder itself if (file.listFiles().length == 0) { logger.info("Delete folder:[{}]", file); file.delete(); } } else { // If it's a file,Just delete yourself logger.info("To delete a file:[{}]", file); file.delete(); } }
2. Scheduled tasks
@Component public class FileJob { private static final Logger logger = LoggerFactory.getLogger(FileJob.class); @Scheduled(cron = "0/1 * * * * *") public void clean() throws ParseException { logger.info("Start deleting files..."); long startTime = System.currentTimeMillis(); //Delete files File deleteFile = new File("xxx"); File[] deleteFiles = deleteFile.listFiles(); for (File file : deleteFiles) { Date createDate = new SimpleDateFormat("yyyy-MM-dd").parse(file.getName()); //Delete files 15 days ago if (new Date().compareTo(DateUtil.getDateIn(DateUtil.DAY, 15, createDate)) > 0) { FileUtil.deleteFile(uploadFile); } } logger.info("End of delete file,Total time consumption:[{}]Millisecond", System.currentTimeMillis() - startTime); } }
Do you think it's easy! Then try it by yourself!