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