Add FilesUncheck.find(Path, int, BiPredicate<Path, BasicFileAttributes>,
FileVisitOption...)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9265b57..71523ce 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -58,6 +58,9 @@
<action dev="ggregory" type="add" due-to="Gary Gregory">
Add IOUtils.skip[Fully](InputStream, long, Supplier<byte[]>).
</action>
+ <action dev="ggregory" type="add" due-to="Gary Gregory">
+ Add FilesUncheck.find(Path, int, BiPredicate%lt;Path, BasicFileAttributes>, FileVisitOption...)
+ </action>
<!-- FIX -->
<action dev="ggregory" type="fix" issue="IO-799" due-to="Jeroen van der Vegt, Gary Gregory">
ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1.
diff --git a/src/main/java/org/apache/commons/io/file/FilesUncheck.java b/src/main/java/org/apache/commons/io/file/FilesUncheck.java
index e99d09c..02a1feb 100644
--- a/src/main/java/org/apache/commons/io/file/FilesUncheck.java
+++ b/src/main/java/org/apache/commons/io/file/FilesUncheck.java
@@ -42,6 +42,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.function.BiPredicate;
import java.util.stream.Stream;
import org.apache.commons.io.function.Uncheck;
@@ -242,6 +243,22 @@ public static boolean deleteIfExists(final Path path) {
}
/**
+ * Delegates to {@link Files#find(Path, int, BiPredicate, FileVisitOption...)} throwing {@link UncheckedIOException} instead of {@link IOException}.
+ *
+ * @param start See delegate.
+ * @param maxDepth See delegate.
+ * @param matcher See delegate.
+ * @param options See delegate.
+ * @return See delegate.
+ * @throws UncheckedIOException Wraps an {@link IOException}.
+ * @since 2.14.0
+ */
+ public static Stream<Path> find(final Path start, final int maxDepth, final BiPredicate<Path, BasicFileAttributes> matcher,
+ final FileVisitOption... options) {
+ return Uncheck.apply(Files::find, start, maxDepth, matcher, options);
+ }
+
+ /**
* Delegates to {@link Files#getAttribute(Path, String, LinkOption...)} throwing {@link UncheckedIOException} instead of
* {@link IOException}.
*
diff --git a/src/test/java/org/apache/commons/io/file/FilesUncheckTest.java b/src/test/java/org/apache/commons/io/file/FilesUncheckTest.java
index 1882353..4fa7368 100644
--- a/src/test/java/org/apache/commons/io/file/FilesUncheckTest.java
+++ b/src/test/java/org/apache/commons/io/file/FilesUncheckTest.java
@@ -165,6 +165,11 @@ public void testDeleteIfExists() {
}
@Test
+ public void testFind() {
+ assertNotNull(FilesUncheck.find(FILE_PATH_EMPTY, 0, (t, u) -> false));
+ }
+
+ @Test
public void testGetAttribute() {
assertEquals(0L, FilesUncheck.getAttribute(FILE_PATH_EMPTY, "basic:size", LinkOption.NOFOLLOW_LINKS));
}