我有一个目录结构,其中包含日期作为文件夹名称的文件夹。
我想删除除最后两天之外的所有文件夹。在这种情况下除了今天的文件夹和最后两天.i.e.,23,22,21。在这里,我无法使用joda-time来查找日期之间的差异。
这是我的代码尝试这个。
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DATE, -2);
//java.util.Date date=new java.util.Date();
System.out.println("the date is "+dateFormat.format(cal.getTime()));
String direct="D:\\tempm\\Sample\\"+dateFormat.format(cal.getTime());
File file=new File(direct);
/* if(!file.exists())
{
file.mkdir();
System.out.println("folder created");
}*/
String path="D:\\tempm\\Sample\\";
File file2=new File(path);
for(File fi:file2.listFiles())
{
if(!fi.getAbsolutePath().equals(direct))
{
System.out.println(fi.getAbsolutePath());
FileDeleteStrategy.FORCE.delete(fi);
System.out.println("files except todays date were deleted");
}
}
如何找到这种格式的日期差异?还有如何将其作为我的案例的路径减去?任何想法都会更有帮助
感谢
答案 0 :(得分:2)
此代码将返回两个日期之间的差异。
/** Using Calendar - THE CORRECT WAY**/
//assert: startDate must be before endDate
public static long daysBetween(Calendar startDate, Calendar endDate) {
Calendar date = (Calendar) startDate.clone();
long daysBetween = 0;
while (date.before(endDate)) {
date.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
}
答案 1 :(得分:2)
这里
Date d1 = null;
Date d2 = null;
try {
d1 = Date.getInstance();
d2 = format.parse(file2.getName());
} catch (ParseException e) {
e.printStackTrace();
}
long diff = d2.getTime() - d1.getTime();
long diffDays = diff / (60 * 60 * 1000 * 24);
if(diffDays<=-3)
{
// Your code of delete
}
现在您只需要使用文件夹的名称来获取日期,并使用Date的实例来区分差异的另一面