|
55 | 55 | import java.util.Collection; |
56 | 56 | import java.util.Collections; |
57 | 57 | import java.util.Date; |
| 58 | +import java.util.HashSet; |
58 | 59 | import java.util.Iterator; |
59 | 60 | import java.util.List; |
60 | 61 | import java.util.Objects; |
| 62 | +import java.util.Set; |
61 | 63 | import java.util.stream.Collectors; |
62 | 64 | import java.util.stream.Stream; |
63 | 65 | import java.util.zip.CRC32; |
@@ -2175,13 +2177,15 @@ public static LineIterator lineIterator(final File file, final String charsetNam |
2175 | 2177 | } |
2176 | 2178 |
|
2177 | 2179 | private static AccumulatorPathVisitor listAccumulate(final File directory, final IOFileFilter fileFilter, |
2178 | | - final IOFileFilter dirFilter) throws IOException { |
| 2180 | + final IOFileFilter dirFilter, FileVisitOption... options) throws IOException { |
2179 | 2181 | final boolean isDirFilterSet = dirFilter != null; |
2180 | 2182 | final FileEqualsFileFilter rootDirFilter = new FileEqualsFileFilter(directory); |
2181 | 2183 | final PathFilter dirPathFilter = isDirFilterSet ? rootDirFilter.or(dirFilter) : rootDirFilter; |
2182 | 2184 | final AccumulatorPathVisitor visitor = new AccumulatorPathVisitor(Counters.noopPathCounters(), fileFilter, |
2183 | 2185 | dirPathFilter); |
2184 | | - Files.walkFileTree(directory.toPath(), Collections.emptySet(), toMaxDepth(isDirFilterSet), visitor); |
| 2186 | + Set<FileVisitOption> optionSet = new HashSet<>(); |
| 2187 | + Collections.addAll(optionSet, options); |
| 2188 | + Files.walkFileTree(directory.toPath(), optionSet, toMaxDepth(isDirFilterSet), visitor); |
2185 | 2189 | return visitor; |
2186 | 2190 | } |
2187 | 2191 |
|
@@ -2237,7 +2241,7 @@ private static File[] listFiles(final File directory, final FileFilter fileFilte |
2237 | 2241 | public static Collection<File> listFiles( |
2238 | 2242 | final File directory, final IOFileFilter fileFilter, final IOFileFilter dirFilter) { |
2239 | 2243 | try { |
2240 | | - final AccumulatorPathVisitor visitor = listAccumulate(directory, fileFilter, dirFilter); |
| 2244 | + final AccumulatorPathVisitor visitor = listAccumulate(directory, fileFilter, dirFilter, FileVisitOption.FOLLOW_LINKS); |
2241 | 2245 | return visitor.getFileList().stream().map(Path::toFile).collect(Collectors.toList()); |
2242 | 2246 | } catch (final IOException e) { |
2243 | 2247 | throw UncheckedIOExceptions.create(directory, e); |
@@ -2284,7 +2288,7 @@ public static Collection<File> listFiles(final File directory, final String[] ex |
2284 | 2288 | public static Collection<File> listFilesAndDirs( |
2285 | 2289 | final File directory, final IOFileFilter fileFilter, final IOFileFilter dirFilter) { |
2286 | 2290 | try { |
2287 | | - final AccumulatorPathVisitor visitor = listAccumulate(directory, fileFilter, dirFilter); |
| 2291 | + final AccumulatorPathVisitor visitor = listAccumulate(directory, fileFilter, dirFilter, FileVisitOption.FOLLOW_LINKS); |
2288 | 2292 | final List<Path> list = visitor.getFileList(); |
2289 | 2293 | list.addAll(visitor.getDirList()); |
2290 | 2294 | return list.stream().map(Path::toFile).collect(Collectors.toList()); |
|
0 commit comments