I am wondering if there is a way to enhance the code below and not only match but also delete all files and directories that contain the "e" character in their name. Any help is appreciated!
Thank you in advance.
Here is the code:
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
class Finder extends SimpleFileVisitor<Path> {
private final PathMatcher matcher;
Finder() {
matcher = FileSystems.getDefault().getPathMatcher("glob:*e*");
}
//@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
find(file);
return FileVisitResult.CONTINUE;
}
//@Override
public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) {
find(file);
return FileVisitResult.CONTINUE;
}
void find(Path file) {
Path name = file.getFileName();
if(matcher.matches(name)) {
System.out.println("Matched file: " + file.getFileName());
}
}
}
public class FileVisitor2 {
public static void main(String[] args) throws IOException {
Finder finder = new Finder();
Path p = Paths.get("C:\\Users\\El\\School\\DirMain");
Files.walkFileTree(p, finder);
}
}
You could use apache commons library org.apache.commons.io.FileUtils to delete files/directory as this FileUtils.deleteQuitely() allows to delete non empty dirs as well.
something like below: