package code.lavivien.com;

import java.io.File;
import java.util.Calendar;

public class CleanFolder {
	private static boolean isFinished = false;
	
	private static void removeOldFiles(String pathname, long t) {
	    File folder = new File(pathname);
	    File[] listofFiles = folder.listFiles();
	    
        for (int j = 0; j < listofFiles.length; j++) {
            File file = listofFiles[j];
            if (file.isDirectory()) {
            	removeOldFiles(file.getAbsolutePath(), t);
            } else {
            	if (file.lastModified() < t) {
            		System.out.println("file  is deleted.");
            		file.delete();
            	}
            }
        }
	}

	private static void removeEmptyFolder(String pathname) {
	    File folder = new File(pathname);
	    File[] listofFiles = folder.listFiles();
	    if (listofFiles == null) {	
	    	return;
	    }
			 
	    if (listofFiles.length == 0) {
	        System.out.println("Folder Name :" + folder.getAbsolutePath()
	        					+ " is deleted.");
	        folder.delete();
	        isFinished = false;
	    } else {
	        for (int j = 0; j < listofFiles.length; j++) {
	            File file = listofFiles[j];
	            if (file.isDirectory()) {
	                removeEmptyFolder(file.getAbsolutePath());
	            }
	        }
	    }	      
	}
	
	public static void main(String[] args) {
		String ROOT_PATH = "C:\\workspace\\test";
		int numOfDays = -7;
		
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, numOfDays);
		long t = cal.getTimeInMillis();
		
	    removeOldFiles(ROOT_PATH, t);

		do {
			isFinished = true;
	        removeEmptyFolder(ROOT_PATH);
	    } while (!isFinished );
	}
}
