[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)));
     }
 
     /**