2013-07-23 145 views
2

我有一个目录结构,其中包含日期作为文件夹名称的文件夹。如何在日期中找到差异

Directory

我要删除所有文件夹,除了最后两天date.In这种情况下,除了今天的文件夹,最后两个days.i.e.,23,22,21。在这里,我不能使用joda时间来查找日期之间的差异。

这是我的代码尝试这一点。

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"); 
     } 
    } 

如何找到日期的差别与格式?怎么也减,作为我的情况的路径?任何想法,将更有利于

感谢

回答

3

这里

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 
    } 

现在你需要使用的文件夹的名称来获得日期和使用日期的实例为差异

+0

我需要减去的另一面两个日期呈现为两条不同的路径。 –

+1

@VigneshVino路径是dateStart和dateStop然后...我想你不想删除最后两天... –

+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; 
} 
}