java删除指定目录下前N天的文件

业务需求:

有时候我们在上传图片到指定目录后,长时间会造成有些图片已经没有任何作用了,我们就可以做一个定时删除指定目录下的文件,去删除那些图片

代码:

package com.example;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.util.Calendar;
import java.util.Date;

@Slf4j
public class DeleteFilesSimpe {
	public static void main(String[] args) {
		 String filePath = "E:/Test";
			moveFileToReady(filePath);
	}

	public static Integer moveFileToReady(String fromDir){
		File srcDir = new File(fromDir);
		if (!srcDir.exists()) {
			return 0;
		}
		File[] files = srcDir.listFiles();
		if (files == null || files.length <= 0) {
			return 0;
		}
		int l = 0;
		Date today = new Date();
		for (int i = 0; i < files.length; i++) {
			if (files[i].isFile()) {
				try {
					File ff = files[i];
			        long time=ff.lastModified();
				    Calendar cal=Calendar.getInstance();   
			        cal.setTimeInMillis(time);   
			        Date lastModified = cal.getTime();
			        long days = getDistDates(today, lastModified);
			        if(days>=3){
			        	files[i].delete();
			        	l++;
			        }
				} catch (Exception e) {
					log.info("删除文件失败");
				}
			}
		}
		return l;
	}
	
	 /** 
     * @param startDate 
     * @param endDate 
     * @return
     */  
    public static long getDistDates(Date startDate,Date endDate)    
    {  
        long totalDate = 0;  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(startDate);  
        long timestart = calendar.getTimeInMillis();  
        calendar.setTime(endDate);  
        long timeend = calendar.getTimeInMillis();  
        totalDate = Math.abs((timeend - timestart))/(1000*60*60*24);  
        return totalDate;  
    }  
}

上面的代码是一个main方法demo,我们如果需要用到定时任务,自己去创建定时任务,然后调用方法就行了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值