Java — How to delete a directory recursively with all its subdirectories and files | Code Factory
2 min readJul 2, 2020
Donate : Link
WordPress Blog : Link
Learn how to delete a directory recursively along with all its subdirectories and files.
Delete directory recursively — Java 8+
This example makes use of Files.walk(Path)
method that returns a Stream<Path>
populated with Path objects by walking the file-tree in depth-first order.
project_folder > folders > folder1 > folder1.1 > test.txt
package com.example.java.programming.file;import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;/**
* @author code.factory
*
*/
public class DeleteDirectoryRecursively {
public static void main(String... args) throws IOException {
Path dir = Paths.get("folders"); // Traverse the file tree in depth-first fashion and delete each file/directory.
Files.walk(dir).sorted(Comparator.reverseOrder()).forEach(path -> {
try {
System.out.println("Deleting: " + path);
Files.delete(path);
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
Output :
Deleting: folders\folder1\folder1.1\test.txt
Deleting: folders\folder1\folder1.1
Deleting: folders\folder1
Deleting: folders
Delete directory recursively — Java 7
The following example uses Files.walkFileTree(Path, FileVisitor)
method that traverses a file tree and invokes the supplied FileVisitor
for each file.
We use a SimpleFileVisitor
to perform the delete operation.
package com.example.java.programming.file;import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;/**
* @author code.factory
*
*/
public class DeleteDirectoryRecursively1 {
public static void main(String... args) throws IOException {
Path dir = Paths.get("folders"); // Traverse the file tree and delete each file/directory.
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("Deleting file: " + file);
Files.delete(file);
return FileVisitResult.CONTINUE;
} @Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
System.out.println("Deleting dir: " + dir);
if (exc == null) {
Files.delete(dir);
return FileVisitResult.CONTINUE;
} else {
throw exc;
}
}
});
}
}
Output :
Deleting file: folders\folder1\folder1.1\test.txt
Deleting dir: folders\folder1\folder1.1
Deleting dir: folders\folder1
Deleting dir: folders