package com.twasyl.slideshowfx.utils.io;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/**
* This class extends {@link java.nio.file.SimpleFileVisitor} in order to delete directories.
* This implementation overrides the following methods:
* <ul>
* <li>{@link java.nio.file.SimpleFileVisitor#postVisitDirectory(Object, java.io.IOException)}</li>
* <li>{@link java.nio.file.SimpleFileVisitor#visitFile(Object, java.nio.file.attribute.BasicFileAttributes)}</li>
* <li>{@link java.nio.file.SimpleFileVisitor#visitFileFailed(Object, java.io.IOException)}</li>
* </ul>
* @author Thierry Wasylczenko
* @version 1.0
* @since SlideshowFX 1.0
*/
public class DeleteFileVisitor extends SimpleFileVisitor<Path> {
@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 {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
if (exc == null) {
Files.delete(dir);
return FileVisitResult.CONTINUE;
} else {
// directory iteration failed; propagate exception
throw exc;
}
}
}