برای این کار باید بصورت بازگشتی شروع به پاک کردن فایل های درون فولدر های بکنید تا فولدر کاملا خالی شود و سپس فولدر خالی را حذف کنید:
public static void deleteFolder(File folder) {
File[] files = folder.listFiles();
if(files != null) {
for(File f: files) {
if(f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
}
}
}
folder.delete();
}
ویرایش: در جاوا 7 قابلیتی به نام FileVisitor اضافه شده است که با استفاده از آن و بدون نیاز به نوشتن تابع بازگشتی می توان این کار را انجام داد:
Files.walkFileTree(Paths.get("yourFolder"), new FileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir
, BasicFileAttributes attrs) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file
, BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file
, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir
, IOException exc) throws IOException {
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
});