diff --git a/src/main/java/com/bartek/esa/file/cleaner/FileCleaner.java b/src/main/java/com/bartek/esa/file/cleaner/FileCleaner.java new file mode 100644 index 0000000..3695ef2 --- /dev/null +++ b/src/main/java/com/bartek/esa/file/cleaner/FileCleaner.java @@ -0,0 +1,26 @@ +package com.bartek.esa.file.cleaner; + +import com.bartek.esa.error.EsaException; +import io.vavr.control.Try; + +import javax.inject.Inject; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Comparator; + +public class FileCleaner { + + @Inject + public FileCleaner() { + + } + + public void deleteRecursively(File directory) { + Try.run(() -> Files.walk(directory.toPath()) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete)) + .getOrElseThrow(EsaException::new); + } +} diff --git a/src/main/java/com/bartek/esa/file/di/FileModule.java b/src/main/java/com/bartek/esa/file/di/FileModule.java index d4e51bb..8d927cc 100644 --- a/src/main/java/com/bartek/esa/file/di/FileModule.java +++ b/src/main/java/com/bartek/esa/file/di/FileModule.java @@ -1,5 +1,6 @@ package com.bartek.esa.file.di; +import com.bartek.esa.file.cleaner.FileCleaner; import com.bartek.esa.file.matcher.GlobMatcher; import com.bartek.esa.file.provider.FileContentProvider; import com.bartek.esa.file.provider.FileProvider; @@ -29,4 +30,9 @@ public class FileModule { public ZipTool zipTool() { return new ZipTool(); } + + @Provides + public FileCleaner fileCleaner() { + return new FileCleaner(); + } }