Skip to content

Commit 3ddf4bf

Browse files
committed
Fix file deletion for empty folders
1 parent d76586c commit 3ddf4bf

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

src/main/java/codechicken/diffpatch/cli/PatchOperation.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.*;
2121
import java.util.function.Consumer;
2222
import java.util.function.Function;
23+
import java.util.stream.Stream;
2324

2425
import static codechicken.diffpatch.util.LogLevel.*;
2526
import static codechicken.diffpatch.util.Utils.filterPrefixed;
@@ -332,20 +333,22 @@ public boolean doPatch(FileCollector oCollector, FileCollector rCollector, Patch
332333
for (String file : removedFiles) {
333334
summary.removedFiles++;
334335
Path deletedFile = this.outputPath.toPath().resolve(file);
335-
336-
Files.walk(deletedFile)
337-
.sorted(Comparator.reverseOrder())
338-
.filter(Files::isDirectory)
339-
.filter(path -> {
340-
try {
341-
return !Files.list(path).findFirst().isPresent();
342-
} catch (IOException e) {
343-
return true;
344-
}
345-
})
346-
.map(Path::toFile)
347-
.forEach(File::delete);
348336
Files.delete(deletedFile);
337+
try(Stream<Path> walker = Files.walk(this.outputPath.toPath())){
338+
walker.sorted(Comparator.reverseOrder())
339+
.filter(Files::isDirectory)
340+
.filter(path -> {
341+
try(Stream<Path> folders = Files.list(path)) {
342+
return !folders.findFirst().isPresent();
343+
} catch (IOException e) {
344+
return false;
345+
}
346+
})
347+
.map(Path::toFile)
348+
.forEach(File::delete);
349+
}
350+
351+
349352
log(DEBUG, "Removed: " + file);
350353
}
351354

0 commit comments

Comments
 (0)