[IO-811] FileUtils.iterateFiles(File, String[], boolean) fails to close
its internal Stream
Different version of solution from PR #489 by Adam Rauch
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b121382..c3c893b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -60,6 +60,9 @@
<action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory">
FileUtils.listFiles(File, String[], boolean) fails to close its internal Stream.
</action>
+ <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory">
+ FileUtils.iterateFiles(File, String[], boolean) fails to close its internal Stream.
+ </action>
</release>
<release version="2.14.0" date="2023-09-24" description="Java 8 is required.">
<!-- FIX -->
diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index 0050aa4..dbada14 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -1996,7 +1996,7 @@ public static Iterator<File> iterateFiles(final File directory, final IOFileFilt
* @since 1.2
*/
public static Iterator<File> iterateFiles(final File directory, final String[] extensions, final boolean recursive) {
- return Uncheck.apply(d -> streamFiles(d, recursive, extensions).iterator(), directory);
+ return StreamIterator.iterator(Uncheck.get(() -> streamFiles(directory, recursive, extensions)));
}
/**