Files#walkが、ディレクトリの上から辿ってPathオブジェクトを返してくれるので、それを利用すると、割りときれいに書けるようです。
ファイル関連はtry-with-resourcesをするのが鉄板の模様
Path dir = Paths.get("/temp");
try(Stream<path> walk = Files.walk(dir, FileVisitOption.FOLLOW_LINKS))
{
walk.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
dir .toFile().delete();
} catch (IOException ie) {
System.out.println(ie);
}