import java.io.File; import java.util.Timer; import java.util.TimerTask; public class JettyTempCleaner extends TimerTask { private static final long CLEAN_INTERVAL = 60000; // 1 minute private File tmpDir; public JettyTempCleaner(File tmpDir) { this.tmpDir = tmpDir; } private static boolean deleteRecursive(File f) { if (f.isDirectory()) { String[] children = f.list(); for (String child : children) { if (!deleteRecursive(new File(f, child))) return false; } } return f.delete(); } private static void clean(File tmpDir) { System.out.println("Trying to remove " + tmpDir); if (deleteRecursive(tmpDir)) { System.out.println("Successfully removed temporary directory"); System.exit(0); } } private void schedule() { System.out.println("Scheduling cleaner for directory " + tmpDir); Timer t = new Timer(); t.scheduleAtFixedRate(this, 1000, CLEAN_INTERVAL); } @Override public void run() { clean(tmpDir); } public static void main(String[] args) { if (args.length != 1) System.exit(1); File tmpDir = new File(args[0]); if (!tmpDir.exists()) { System.err.println("Directory " + args[0] + " doesn't exist"); System.exit(2); } JettyTempCleaner cleaner = new JettyTempCleaner(tmpDir); cleaner.schedule(); } }