Java tutorial
import java.io.File; import java.io.IOException; public class Utils { /** * delete all files under this file and including this file * * @param f * @throws IOException */ public static void deleteAll(File f) throws IOException { recurse(f, new RecurseAction() { public void doFile(File file) throws IOException { file.delete(); if (file.exists()) { throw new IOException("Failed to delete " + file.getPath()); } } public void doBeforeFile(File f) { } public void doAfterFile(File f) { } }); } public static void recurse(File f, RecurseAction action) throws IOException { action.doBeforeFile(f); if (f.isDirectory()) { File[] files = f.listFiles(); if (files != null) { for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { recurse(files[i], action); } else { action.doFile(files[i]); } } } } action.doFile(f); } } interface RecurseAction { /** * @param file * @throws IOException */ void doFile(File file) throws IOException; /** * @param f */ void doBeforeFile(File f); /** * @param f */ void doAfterFile(File f); }