From f8ce24823675e0e32b3e965755812b27b3cfce2b Mon Sep 17 00:00:00 2001 From: opokharel <66694687+opokharel@users.noreply.github.com> Date: Wed, 18 May 2022 18:36:27 -0600 Subject: [PATCH] [BAEL-5554] Find files that match a wildcard string in Java by @opokharel (#12190) * BAEL-5554 by @opokharel * deletedToMoveToSrcFolder * movedToSrcFolder * redoingForJenkins * newPR for [BAEL-5554] Find files that match a wildcard string in Java by @opokharel * @opokharel * [BAEL-5554] @opokharel * [BAEL-5554] Find files that match a wildcard string in Java by @opokharel * Update SearchFileByWildcardTest.java * Update SearchFileByWildcard.java * Update SearchFileByWildcard.java * Create SearchFileByWildcardUnitTest.java * Delete SearchFileByWildcardTest.java * [BAEL-5554] Find files that match a wildcard string in Java by @opokharel * Update SearchFileByWildcardUnitTest.java * Update SearchFileByWildcardUnitTest.java * [BAEL-5554] UnitTestFiles by @opokharel * Update core-java-modules/core-java-nio-2/src/test/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcardUnitTest.java Co-authored-by: KevinGilmore * updated curly braces and assertions Co-authored-by: KevinGilmore --- .../SearchFileByWildcard.java | 37 ++++++++++++++++++ .../SearchFileByWildcardUnitTest.java | 30 ++++++++++++++ .../src/test/resources/sfbw/test/five.csv | 0 .../src/test/resources/sfbw/test/four.xlsx | Bin 0 -> 6169 bytes .../src/test/resources/sfbw/test/one.txt | 0 .../test/resources/sfbw/test/test2/six.txt | 0 .../src/test/resources/sfbw/test/three.txt | 0 .../src/test/resources/sfbw/test/two.docx | 0 8 files changed, 67 insertions(+) create mode 100644 core-java-modules/core-java-nio-2/src/main/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcard.java create mode 100644 core-java-modules/core-java-nio-2/src/test/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcardUnitTest.java create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/five.csv create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/four.xlsx create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/one.txt create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/test2/six.txt create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/three.txt create mode 100644 core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/two.docx diff --git a/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcard.java b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcard.java new file mode 100644 index 0000000000..2deaa60ec6 --- /dev/null +++ b/core-java-modules/core-java-nio-2/src/main/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcard.java @@ -0,0 +1,37 @@ +package com.baeldung.searchfilesbywildcards; + +import java.io.IOException; + +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.FileVisitResult; +import java.nio.file.FileVisitor; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.PathMatcher; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; + +import java.util.ArrayList; +import java.util.List; + +public class SearchFileByWildcard { + public static List matchesList = new ArrayList(); + public List searchWithWc(Path rootDir, String pattern) throws IOException { + matchesList.clear(); + FileVisitor matcherVisitor = new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attribs) throws IOException { + FileSystem fs = FileSystems.getDefault(); + PathMatcher matcher = fs.getPathMatcher(pattern); + Path name = file.getFileName(); + if (matcher.matches(name)) { + matchesList.add(name.toString()); + } + return FileVisitResult.CONTINUE; + } + }; + Files.walkFileTree(rootDir, matcherVisitor); + return matchesList; + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcardUnitTest.java b/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcardUnitTest.java new file mode 100644 index 0000000000..71cee036ec --- /dev/null +++ b/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/searchfilesbywildcards/SearchFileByWildcardUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.searchfilesbywildcards; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.IOException; + +import java.nio.file.Paths; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class SearchFileByWildcardUnitTest { + @Test + public void whenFourFilenameMatch_thenListOfFour() throws IOException { + SearchFileByWildcard sfbw = new SearchFileByWildcard(); + List actual = sfbw.searchWithWc(Paths.get("src/test/resources/sfbw"), "glob:*.{txt,docx}"); + + assertEquals(new HashSet<>(Arrays.asList("six.txt", "three.txt", "two.docx", "one.txt")), new HashSet<>(actual)); + } + @Test + public void whenOneFilenameMatch_thenListOfOne() throws IOException { + SearchFileByWildcard sfbw = new SearchFileByWildcard(); + List actual = sfbw.searchWithWc(Paths.get("src/test/resources/sfbw"), "glob:????.{csv}"); + + assertEquals(new HashSet<>(Arrays.asList("five.csv")), new HashSet<>(actual)); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/five.csv b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/five.csv new file mode 100644 index 0000000000..e69de29bb2 diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/four.xlsx b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/four.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1091dafe75e41a1e45f2c0b8df3dfe6d7f6f9af6 GIT binary patch literal 6169 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 T8WjM50R8eq+c=!^;@f`#F)1b5 literal 0 HcmV?d00001 diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/one.txt b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/one.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/test2/six.txt b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/test2/six.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/three.txt b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/three.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/two.docx b/core-java-modules/core-java-nio-2/src/test/resources/sfbw/test/two.docx new file mode 100644 index 0000000000..e69de29bb2