2013-07-23 3 views
2

폴더 이름에 날짜가있는 폴더가있는 디렉토리 구조가 있습니다.날짜의 차이를 찾는 방법

Directory

나는 지난 2 일을 제외한 모든 폴더를 삭제하려면 date.In 오늘의 폴더와 마지막 두 days.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"); 
     } 
    } 

이 형식으로 날짜의 차이를 확인하는 방법? 또한, 내 경우의 경로로 그 빼기하는 방법? 어떤 아이디어가

감사

답변

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 인 경우 ... 지난 2 일을 삭제하지 않으려 고 생각했습니다 ... –

+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; 
} 
} 
관련 문제