You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/10/16 13:56:28 UTC
[commons-io] branch master updated: Move new PathFilter interface
to the file package, annotate it with @FunctionalInterface,
and add a BasicFileAttributes parameter to accept attributes from
java.nio.file.FileVisitor.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git
The following commit(s) were added to refs/heads/master by this push:
new 6b896da Move new PathFilter interface to the file package, annotate it with @FunctionalInterface, and add a BasicFileAttributes parameter to accept attributes from java.nio.file.FileVisitor.
6b896da is described below
commit 6b896da857d7d107e4d7158bebca0798d2319c57
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Oct 16 09:56:21 2020 -0400
Move new PathFilter interface to the file package, annotate it with
@FunctionalInterface, and add a BasicFileAttributes parameter to accept
attributes from java.nio.file.FileVisitor.
---
.../commons/io/file/CountingPathVisitor.java | 4 +-
.../org/apache/commons/io/file/PathFilter.java | 4 +-
.../java/org/apache/commons/io/file/PathUtils.java | 6 ++-
.../commons/io/filefilter/AbstractFileFilter.java | 8 ++--
.../commons/io/filefilter/AgeFileFilter.java | 5 ++-
.../commons/io/filefilter/AndFileFilter.java | 5 ++-
.../io/filefilter/CanExecuteFileFilter.java | 5 ++-
.../commons/io/filefilter/CanReadFileFilter.java | 5 ++-
.../commons/io/filefilter/CanWriteFileFilter.java | 5 ++-
.../commons/io/filefilter/DirectoryFileFilter.java | 5 ++-
.../io/filefilter/DirectoryStreamFilter.java | 7 ++-
.../commons/io/filefilter/EmptyFileFilter.java | 5 ++-
.../commons/io/filefilter/FalseFileFilter.java | 5 ++-
.../commons/io/filefilter/FileFileFilter.java | 5 ++-
.../commons/io/filefilter/HiddenFileFilter.java | 5 ++-
.../apache/commons/io/filefilter/IOFileFilter.java | 3 +-
.../io/filefilter/MagicNumberFileFilter.java | 4 +-
.../commons/io/filefilter/NameFileFilter.java | 5 ++-
.../commons/io/filefilter/NotFileFilter.java | 7 +--
.../apache/commons/io/filefilter/OrFileFilter.java | 5 ++-
.../io/filefilter/PathVisitorFileFilter.java | 12 +++---
.../commons/io/filefilter/PrefixFileFilter.java | 5 ++-
.../commons/io/filefilter/RegexFileFilter.java | 5 ++-
.../commons/io/filefilter/SizeFileFilter.java | 4 +-
.../commons/io/filefilter/SuffixFileFilter.java | 5 ++-
.../commons/io/filefilter/TrueFileFilter.java | 5 ++-
.../commons/io/filefilter/WildcardFileFilter.java | 5 ++-
.../commons/io/filefilter/WildcardFilter.java | 5 ++-
.../io/filefilter/DirectoryFileFilterTest.java | 2 +-
.../commons/io/filefilter/FileFilterTestCase.java | 50 +++++++++++-----------
.../filefilter/IOFileFilterAbstractTestCase.java | 2 +-
.../commons/io/filefilter/NameFileFilterTest.java | 6 +--
.../io/filefilter/RegexFileFilterTestCase.java | 6 +--
33 files changed, 121 insertions(+), 94 deletions(-)
diff --git a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
index 4256696..7d34e59 100644
--- a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
@@ -123,7 +123,7 @@ public class CountingPathVisitor extends SimplePathVisitor {
* @param exc Encountered exception.
* @since 2.9.0
*/
- protected void updateDirCounter(Path dir, IOException exc) {
+ protected void updateDirCounter(final Path dir, final IOException exc) {
pathCounters.getDirectoryCounter().increment();
}
@@ -140,7 +140,7 @@ public class CountingPathVisitor extends SimplePathVisitor {
@Override
public FileVisitResult visitFile(final Path file, final BasicFileAttributes attributes) throws IOException {
- if (Files.exists(file) && pathFilter.accept(file) == FileVisitResult.CONTINUE) {
+ if (Files.exists(file) && pathFilter.accept(file, attributes) == FileVisitResult.CONTINUE) {
updateFileCounters(file, attributes);
}
return FileVisitResult.CONTINUE;
diff --git a/src/main/java/org/apache/commons/io/file/PathFilter.java b/src/main/java/org/apache/commons/io/file/PathFilter.java
index 0b789cf..4c415bf 100644
--- a/src/main/java/org/apache/commons/io/file/PathFilter.java
+++ b/src/main/java/org/apache/commons/io/file/PathFilter.java
@@ -20,6 +20,7 @@ package org.apache.commons.io.file;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* A filter for {@link Path}s.
@@ -33,8 +34,9 @@ public interface PathFilter {
* Tests whether or not to include the specified Path in a result.
*
* @param path The Path to test.
+ * @param attributes the file's basic attributes.
* @return a FileVisitResult
* @throws IOException if an I/O error occurs.
*/
- FileVisitResult accept(Path path) throws IOException;
+ FileVisitResult accept(Path path, BasicFileAttributes attributes) throws IOException;
}
diff --git a/src/main/java/org/apache/commons/io/file/PathUtils.java b/src/main/java/org/apache/commons/io/file/PathUtils.java
index 5b00668..a578c7e 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -35,6 +35,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.AclEntry;
import java.nio.file.attribute.AclFileAttributeView;
+import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.DosFileAttributeView;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFileAttributes;
@@ -829,9 +830,10 @@ public final class PathUtils {
if (stream == null) {
return Stream.<Path>empty().collect(collector);
}
- return stream.filter(t -> {
+ return stream.filter(p -> {
try {
- return filter.accept(t) == FileVisitResult.CONTINUE;
+ return p != null
+ && filter.accept(p, Files.readAttributes(p, BasicFileAttributes.class)) == FileVisitResult.CONTINUE;
} catch (final IOException e) {
return false;
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/AbstractFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/AbstractFileFilter.java
index 59a7a47..3632c93 100644
--- a/src/main/java/org/apache/commons/io/filefilter/AbstractFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/AbstractFileFilter.java
@@ -85,8 +85,8 @@ public abstract class AbstractFileFilter implements IOFileFilter, PathVisitor {
}
@Override
- public FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attrs) throws IOException {
- return accept(dir);
+ public FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attributes) throws IOException {
+ return accept(dir, attributes);
}
/**
@@ -100,8 +100,8 @@ public abstract class AbstractFileFilter implements IOFileFilter, PathVisitor {
}
@Override
- public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
- return accept(file);
+ public FileVisitResult visitFile(final Path file, final BasicFileAttributes attributes) throws IOException {
+ return accept(file, attributes);
}
@Override
diff --git a/src/main/java/org/apache/commons/io/filefilter/AgeFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/AgeFileFilter.java
index 17dc0b1..eb69758 100644
--- a/src/main/java/org/apache/commons/io/filefilter/AgeFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/AgeFileFilter.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.Date;
import org.apache.commons.io.FileUtils;
@@ -168,13 +169,13 @@ public class AgeFileFilter extends AbstractFileFilter implements Serializable {
* If last modification time equals cutoff and newer files are required, file <b>IS NOT</b> selected. If last
* modification time equals cutoff and older files are required, file <b>IS</b> selected.
* </p>
- *
* @param file the File to check
+ *
* @return true if the file name matches
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
boolean newer;
try {
newer = PathUtils.isNewer(file, cutoffMillis);
diff --git a/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java
index 6674445..3ebd892 100644
--- a/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -138,12 +139,12 @@ public class AndFileFilter
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) throws IOException {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) throws IOException {
if (isEmpty()) {
return FileVisitResult.TERMINATE;
}
for (final IOFileFilter fileFilter : fileFilters) {
- if (fileFilter.accept(file) != FileVisitResult.CONTINUE) {
+ if (fileFilter.accept(file, attributes) != FileVisitResult.CONTINUE) {
return FileVisitResult.TERMINATE;
}
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/CanExecuteFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/CanExecuteFileFilter.java
index 05b1a5b..802a12f 100644
--- a/src/main/java/org/apache/commons/io/filefilter/CanExecuteFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/CanExecuteFileFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that can be executed.
@@ -82,13 +83,13 @@ public class CanExecuteFileFilter extends AbstractFileFilter implements Serializ
/**
* Checks to see if the file can be executed.
- *
* @param file the File to check.
+ *
* @return {@code true} if the file can be executed, otherwise {@code false}.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(Files.isExecutable(file));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/CanReadFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/CanReadFileFilter.java
index 9776bdb..f4dd372 100644
--- a/src/main/java/org/apache/commons/io/filefilter/CanReadFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/CanReadFileFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that can be read.
@@ -92,13 +93,13 @@ public class CanReadFileFilter extends AbstractFileFilter implements Serializabl
/**
* Checks to see if the file can be read.
- *
* @param file the File to check.
+ *
* @return {@code true} if the file can be read, otherwise {@code false}.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(Files.isReadable(file));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/CanWriteFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/CanWriteFileFilter.java
index e69de26..a87c2bd 100644
--- a/src/main/java/org/apache/commons/io/filefilter/CanWriteFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/CanWriteFileFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that can be written to.
@@ -81,13 +82,13 @@ public class CanWriteFileFilter extends AbstractFileFilter implements Serializab
/**
* Checks to see if the file can be written to.
- *
* @param file the File to check
+ *
* @return {@code true} if the file can be written to, otherwise {@code false}.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(Files.isWritable(file));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/DirectoryFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/DirectoryFileFilter.java
index 8a88ca5..23183a5 100644
--- a/src/main/java/org/apache/commons/io/filefilter/DirectoryFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/DirectoryFileFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that are directories.
@@ -97,13 +98,13 @@ public class DirectoryFileFilter extends AbstractFileFilter implements Serializa
/**
* Checks to see if the file is a directory.
- *
* @param file the File to check
+ *
* @return true if the file is a directory
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(Files.isDirectory(file));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/DirectoryStreamFilter.java b/src/main/java/org/apache/commons/io/filefilter/DirectoryStreamFilter.java
index e14471e..618bcb6 100644
--- a/src/main/java/org/apache/commons/io/filefilter/DirectoryStreamFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/DirectoryStreamFilter.java
@@ -20,7 +20,9 @@ package org.apache.commons.io.filefilter;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.Objects;
import org.apache.commons.io.file.PathFilter;
@@ -50,8 +52,9 @@ public class DirectoryStreamFilter implements DirectoryStream.Filter<Path> {
}
@Override
- public boolean accept(final Path entry) throws IOException {
- return pathFilter.accept(entry) == FileVisitResult.CONTINUE;
+ public boolean accept(final Path path) throws IOException {
+ return pathFilter.accept(path,
+ Files.readAttributes(path, BasicFileAttributes.class)) == FileVisitResult.CONTINUE;
}
/**
diff --git a/src/main/java/org/apache/commons/io/filefilter/EmptyFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/EmptyFileFilter.java
index 71a89b8..04a0e56 100644
--- a/src/main/java/org/apache/commons/io/filefilter/EmptyFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/EmptyFileFilter.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.stream.Stream;
/**
@@ -107,13 +108,13 @@ public class EmptyFileFilter extends AbstractFileFilter implements Serializable
/**
* Checks to see if the file is empty.
- *
* @param file the file or directory to check
+ *
* @return {@code true} if the file or directory is <i>empty</i>, otherwise {@code false}.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
try {
if (Files.isDirectory(file)) {
try (Stream<Path> stream = Files.list(file)) {
diff --git a/src/main/java/org/apache/commons/io/filefilter/FalseFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/FalseFileFilter.java
index 5a19c44..071bb51 100644
--- a/src/main/java/org/apache/commons/io/filefilter/FalseFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/FalseFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* A file filter that always returns false.
@@ -75,13 +76,13 @@ public class FalseFileFilter implements IOFileFilter, Serializable {
/**
* Returns false.
- *
* @param file the file to check (ignored)
+ *
* @return false
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return FileVisitResult.TERMINATE;
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/FileFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/FileFileFilter.java
index 2223251..a2980d7 100644
--- a/src/main/java/org/apache/commons/io/filefilter/FileFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/FileFileFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that are files (not directories).
@@ -84,13 +85,13 @@ public class FileFileFilter extends AbstractFileFilter implements Serializable {
/**
* Checks to see if the file is a file.
- *
* @param file the File to check
+ *
* @return true if the file is a file
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(Files.isRegularFile(file));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/HiddenFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/HiddenFileFilter.java
index 6d4812f..3257498 100644
--- a/src/main/java/org/apache/commons/io/filefilter/HiddenFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/HiddenFileFilter.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter accepts <code>File</code>s that are hidden.
@@ -102,14 +103,14 @@ public class HiddenFileFilter extends AbstractFileFilter implements Serializable
/**
* Checks to see if the file is hidden.
- *
* @param file the File to check
+ *
* @return {@code true} if the file is
* <i>hidden</i>, otherwise {@code false}.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
try {
return toFileVisitResult(Files.isHidden(file));
} catch (final IOException e) {
diff --git a/src/main/java/org/apache/commons/io/filefilter/IOFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/IOFileFilter.java
index 62750cc..ccb2cec 100644
--- a/src/main/java/org/apache/commons/io/filefilter/IOFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/IOFileFilter.java
@@ -22,6 +22,7 @@ import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import org.apache.commons.io.file.PathFilter;
@@ -71,7 +72,7 @@ public interface IOFileFilter extends FileFilter, FilenameFilter, PathFilter {
* @since 2.9.0
*/
@Override
- default FileVisitResult accept(final Path path) throws IOException {
+ default FileVisitResult accept(final Path path, final BasicFileAttributes attributes) throws IOException {
return AbstractFileFilter.toFileVisitResult(accept(path.toFile()));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java
index aec6051..701e5e1 100644
--- a/src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java
@@ -26,6 +26,7 @@ import java.nio.charset.Charset;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.Arrays;
/**
@@ -284,7 +285,6 @@ public class MagicNumberFileFilter extends AbstractFileFilter implements
* If any {@link IOException}s occur while reading the file, the file will
* be rejected.
* </p>
- *
* @param file the file to accept or reject.
*
* @return {@code true} if the file contains the filter's magic number
@@ -292,7 +292,7 @@ public class MagicNumberFileFilter extends AbstractFileFilter implements
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
if (file != null && Files.isRegularFile(file) && Files.isReadable(file)) {
try {
try (final FileChannel fileChannel = FileChannel.open(file)) {
diff --git a/src/main/java/org/apache/commons/io/filefilter/NameFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/NameFileFilter.java
index f5aca29..9e50f58 100644
--- a/src/main/java/org/apache/commons/io/filefilter/NameFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/NameFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import org.apache.commons.io.IOCase;
@@ -178,13 +179,13 @@ public class NameFileFilter extends AbstractFileFilter implements Serializable {
/**
* Checks to see if the file name matches.
- *
* @param file the File to check
+ *
* @return true if the file name matches
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(acceptBaseName(file.getFileName().toString()));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java
index 788b288..c4d40c8 100644
--- a/src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* This filter produces a logical NOT of the filters specified.
@@ -73,15 +74,15 @@ public class NotFileFilter extends AbstractFileFilter implements Serializable {
/**
* Returns the logical NOT of the underlying filter's return value for the same File.
- *
* @param file the File to check
+ *
* @return true if the filter returns false
* @throws IOException if an I/O error occurs
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) throws IOException {
- return not(filter.accept(file));
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) throws IOException {
+ return not(filter.accept(file, attributes));
}
private FileVisitResult not(final FileVisitResult accept) {
diff --git a/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java
index f3a8db4..d43ad36 100644
--- a/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -126,9 +127,9 @@ public class OrFileFilter extends AbstractFileFilter implements ConditionalFileF
* {@inheritDoc}
*/
@Override
- public FileVisitResult accept(final Path file) throws IOException {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) throws IOException {
for (final IOFileFilter fileFilter : fileFilters) {
- if (fileFilter.accept(file) == FileVisitResult.CONTINUE) {
+ if (fileFilter.accept(file, attributes) == FileVisitResult.CONTINUE) {
return FileVisitResult.CONTINUE;
}
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/PathVisitorFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/PathVisitorFileFilter.java
index 7f5aa30..1e65b8e 100644
--- a/src/main/java/org/apache/commons/io/filefilter/PathVisitorFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/PathVisitorFileFilter.java
@@ -59,16 +59,16 @@ public class PathVisitorFileFilter extends AbstractFileFilter {
@Override
public boolean accept(final File dir, final String name) {
try {
- return accept(dir.toPath().resolve(name)) == FileVisitResult.CONTINUE;
+ final Path path = dir.toPath().resolve(name);
+ return accept(path, Files.readAttributes(path, BasicFileAttributes.class)) == FileVisitResult.CONTINUE;
} catch (final IOException e) {
return handle(e) == FileVisitResult.CONTINUE;
}
}
@Override
- public FileVisitResult accept(final Path path) throws IOException {
- return Files.isDirectory(path) ? pathVisitor.postVisitDirectory(path, null)
- : visitFile(path, getBasicFileAttributeView(path));
+ public FileVisitResult accept(final Path path, final BasicFileAttributes attributes) throws IOException {
+ return Files.isDirectory(path) ? pathVisitor.postVisitDirectory(path, null) : visitFile(path, attributes);
}
protected BasicFileAttributes getBasicFileAttributeView(final Path path) throws IOException {
@@ -76,9 +76,9 @@ public class PathVisitorFileFilter extends AbstractFileFilter {
}
@Override
- public FileVisitResult visitFile(final Path path, final BasicFileAttributes basicFileAttributeView)
+ public FileVisitResult visitFile(final Path path, final BasicFileAttributes attributes)
throws IOException {
- return pathVisitor.visitFile(path, basicFileAttributeView);
+ return pathVisitor.visitFile(path, attributes);
}
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/PrefixFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/PrefixFileFilter.java
index f28b5fb..97452e0 100644
--- a/src/main/java/org/apache/commons/io/filefilter/PrefixFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/PrefixFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import org.apache.commons.io.IOCase;
@@ -184,13 +185,13 @@ public class PrefixFileFilter extends AbstractFileFilter implements Serializable
/**
* Checks to see if the file name starts with the prefix.
- *
* @param file the File to check
+ *
* @return true if the file name starts with one of our prefixes
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(accept(file.getFileName().toFile()));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java
index 4a22fb5..6548284 100644
--- a/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/RegexFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.regex.Pattern;
import org.apache.commons.io.IOCase;
@@ -142,13 +143,13 @@ public class RegexFileFilter extends AbstractFileFilter implements Serializable
/**
* Checks to see if the file name matches one of the regular expressions.
- *
* @param dir the file directory (ignored)
* @param name the file name
+ *
* @return true if the file name matches one of the regular expressions
*/
@Override
- public FileVisitResult accept(final Path path) {
+ public FileVisitResult accept(final Path path, final BasicFileAttributes attributes) {
return toFileVisitResult(pattern.matcher(path.toString()).matches());
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/SizeFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/SizeFileFilter.java
index f8bf49b..d668074 100644
--- a/src/main/java/org/apache/commons/io/filefilter/SizeFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/SizeFileFilter.java
@@ -131,12 +131,12 @@ public class SizeFileFilter extends AbstractFileFilter implements Serializable {
* If size equals threshold and larger files are required,
* file <b>IS</b> selected.
* </p>
- *
* @param file the File to check
+ *
* @return true if the file name matches
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
try {
return toFileVisitResult(accept(Files.size(file)));
} catch (final IOException e) {
diff --git a/src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java
index a4211bc..6875fcc 100644
--- a/src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import org.apache.commons.io.IOCase;
@@ -185,13 +186,13 @@ public class SuffixFileFilter extends AbstractFileFilter implements Serializable
/**
* Checks to see if the file name ends with the suffix.
- *
* @param file the File to check
+ *
* @return true if the file name ends with one of our suffixes
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(accept(file.getFileName().toString()));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/TrueFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/TrueFileFilter.java
index fdf3071..8716c72 100644
--- a/src/main/java/org/apache/commons/io/filefilter/TrueFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/TrueFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
/**
* A file filter that always returns true.
@@ -75,13 +76,13 @@ public class TrueFileFilter implements IOFileFilter, Serializable {
/**
* Returns true.
- *
* @param file the file to check (ignored)
+ *
* @return true
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return FileVisitResult.CONTINUE;
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/WildcardFileFilter.java b/src/main/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
index 8663943..d1ecf47 100644
--- a/src/main/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/WildcardFileFilter.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
@@ -187,13 +188,13 @@ public class WildcardFileFilter extends AbstractFileFilter implements Serializab
/**
* Checks to see if the file name matches one of the wildcards.
- *
* @param file the file to check
+ *
* @return true if the file name matches one of the wildcards.
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
return toFileVisitResult(accept(file.getFileName().toString()));
}
diff --git a/src/main/java/org/apache/commons/io/filefilter/WildcardFilter.java b/src/main/java/org/apache/commons/io/filefilter/WildcardFilter.java
index 744366b..c06083c 100644
--- a/src/main/java/org/apache/commons/io/filefilter/WildcardFilter.java
+++ b/src/main/java/org/apache/commons/io/filefilter/WildcardFilter.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
@@ -145,13 +146,13 @@ public class WildcardFilter extends AbstractFileFilter implements Serializable {
/**
* Checks to see if the file name matches one of the wildcards.
- *
* @param file the file to check
+ *
* @return true if the file name matches one of the wildcards
* @since 2.9.0
*/
@Override
- public FileVisitResult accept(final Path file) {
+ public FileVisitResult accept(final Path file, final BasicFileAttributes attributes) {
if (Files.isDirectory(file)) {
return FileVisitResult.TERMINATE;
}
diff --git a/src/test/java/org/apache/commons/io/filefilter/DirectoryFileFilterTest.java b/src/test/java/org/apache/commons/io/filefilter/DirectoryFileFilterTest.java
index 77ea8fb..f751237 100644
--- a/src/test/java/org/apache/commons/io/filefilter/DirectoryFileFilterTest.java
+++ b/src/test/java/org/apache/commons/io/filefilter/DirectoryFileFilterTest.java
@@ -47,7 +47,7 @@ public class DirectoryFileFilterTest {
public void testJavadocExampleUsingIo() {
final File dir = new File(".");
final String[] files = dir.list(DirectoryFileFilter.INSTANCE);
- for (String file : files) {
+ for (final String file : files) {
// System.out.println(files[i]);
}
// End of Javadoc example
diff --git a/src/test/java/org/apache/commons/io/filefilter/FileFilterTestCase.java b/src/test/java/org/apache/commons/io/filefilter/FileFilterTestCase.java
index 0777004..27f5227 100644
--- a/src/test/java/org/apache/commons/io/filefilter/FileFilterTestCase.java
+++ b/src/test/java/org/apache/commons/io/filefilter/FileFilterTestCase.java
@@ -89,15 +89,15 @@ public class FileFilterTestCase {
// Note. This only tests the (Path, Path) version if the parent of
// the File passed in is not null
final FileVisitResult expectedFileVisitResult = AbstractFileFilter.toFileVisitResult(expected);
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for " + path);
if (path != null && path.getParent() != null) {
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for "
+ path);
} else if (path == null) {
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for null");
}
assertNotNull(filter.toString());
@@ -140,8 +140,8 @@ public class FileFilterTestCase {
assertTrue(filter.accept(testFile.getParentFile(), testFile.getName()));
assertTrue(!filter.accept(fredFile.getParentFile(), fredFile.getName()));
//
- assertEquals(FileVisitResult.CONTINUE, filter.accept(testPath));
- assertEquals(FileVisitResult.TERMINATE, filter.accept(fredPath));
+ assertEquals(FileVisitResult.CONTINUE, filter.accept(testPath, null));
+ assertEquals(FileVisitResult.TERMINATE, filter.accept(fredPath, null));
final List<String> prefixes = Arrays.asList("ood", "red");
final IOFileFilter listFilter = new SuffixFileFilter(prefixes);
@@ -149,8 +149,8 @@ public class FileFilterTestCase {
assertTrue(!listFilter.accept(testFile.getParentFile(), testFile.getName()));
assertTrue(listFilter.accept(fredFile.getParentFile(), fredFile.getName()));
//
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(testPath));
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(fredPath));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(testPath, null));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(fredPath, null));
try {
new SuffixFileFilter((String) null);
@@ -310,8 +310,8 @@ public class FileFilterTestCase {
assertTrue(filter.accept(testFile.getParentFile(), testFile.getName()));
assertTrue(!filter.accept(fredFile.getParentFile(), fredFile.getName()));
//
- assertEquals(FileVisitResult.CONTINUE, filter.accept(testPath));
- assertEquals(FileVisitResult.TERMINATE, filter.accept(fredPath));
+ assertEquals(FileVisitResult.CONTINUE, filter.accept(testPath, null));
+ assertEquals(FileVisitResult.TERMINATE, filter.accept(fredPath, null));
final List<String> prefixes = Arrays.asList("foo", "fre");
final IOFileFilter listFilter = new PrefixFileFilter(prefixes);
@@ -319,8 +319,8 @@ public class FileFilterTestCase {
assertTrue(!listFilter.accept(testFile.getParentFile(), testFile.getName()));
assertTrue(listFilter.accept(fredFile.getParentFile(), fredFile.getName()));
//
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(testPath));
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(fredPath));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(testPath, null));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(fredPath, null));
try {
new PrefixFileFilter((String) null);
@@ -635,10 +635,10 @@ public class FileFilterTestCase {
assertFiltering(orFilter, testPath, true);
assertTrue(orFilter.accept(testFile.getParentFile(), testFile.getName()));
- assertEquals(FileVisitResult.CONTINUE, orFilter.accept(testPath));
+ assertEquals(FileVisitResult.CONTINUE, orFilter.accept(testPath, null));
orFilter.removeFileFilter(trueFilter);
assertTrue(!orFilter.accept(testFile.getParentFile(), testFile.getName()));
- assertEquals(FileVisitResult.TERMINATE, orFilter.accept(testPath));
+ assertEquals(FileVisitResult.TERMINATE, orFilter.accept(testPath, null));
try {
new OrFileFilter(falseFilter, (IOFileFilter) null);
@@ -729,17 +729,17 @@ public class FileFilterTestCase {
assertTrue(!listFilter.accept(bmpFile));
assertTrue(!listFilter.accept(dirFile));
//
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath, null));
assertTrue(listFilter.accept(txtFile.getParentFile(), txtFile.getName()));
assertTrue(!listFilter.accept(bmpFile.getParentFile(), bmpFile.getName()));
assertTrue(!listFilter.accept(dirFile.getParentFile(), dirFile.getName()));
//
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath, null));
try {
new WildcardFilter((String) null);
@@ -859,17 +859,17 @@ public class FileFilterTestCase {
assertTrue(!listFilter.accept(bmpFile));
assertTrue(!listFilter.accept(dirFile));
//
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtFile.toPath()));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpFile.toPath()));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirFile.toPath()));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtFile.toPath(), null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpFile.toPath(), null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirFile.toPath(), null));
assertTrue(listFilter.accept(txtFile.getParentFile(), txtFile.getName()));
assertTrue(!listFilter.accept(bmpFile.getParentFile(), bmpFile.getName()));
assertTrue(!listFilter.accept(dirFile.getParentFile(), dirFile.getName()));
//
- assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath));
- assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath));
+ assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath, null));
+ assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath, null));
try {
new WildcardFileFilter((String) null);
diff --git a/src/test/java/org/apache/commons/io/filefilter/IOFileFilterAbstractTestCase.java b/src/test/java/org/apache/commons/io/filefilter/IOFileFilterAbstractTestCase.java
index 0962973..4cc193d 100644
--- a/src/test/java/org/apache/commons/io/filefilter/IOFileFilterAbstractTestCase.java
+++ b/src/test/java/org/apache/commons/io/filefilter/IOFileFilterAbstractTestCase.java
@@ -41,7 +41,7 @@ public abstract class IOFileFilterAbstractTestCase {
// the File passed in is not null
assertEquals(expected, filter.accept(file),
"test " + testNumber + " Filter(File) " + filter.getClass().getName() + " not " + expected + " for " + file);
- assertEquals(expected, filter.accept(file.toPath()),
+ assertEquals(expected, filter.accept(file.toPath(), null),
"test " + testNumber + " Filter(File) " + filter.getClass().getName() + " not " + expected + " for " + file);
if (file != null && file.getParentFile() != null) {
diff --git a/src/test/java/org/apache/commons/io/filefilter/NameFileFilterTest.java b/src/test/java/org/apache/commons/io/filefilter/NameFileFilterTest.java
index 7424acd..81402b0 100644
--- a/src/test/java/org/apache/commons/io/filefilter/NameFileFilterTest.java
+++ b/src/test/java/org/apache/commons/io/filefilter/NameFileFilterTest.java
@@ -45,9 +45,9 @@ public class NameFileFilterTest {
*/
@Test
public void testJavadocExampleUsingIo() {
- File dir = new File(".");
- String[] files = dir.list(new NameFileFilter("NOTICE.txt"));
- for (String file : files) {
+ final File dir = new File(".");
+ final String[] files = dir.list(new NameFileFilter("NOTICE.txt"));
+ for (final String file : files) {
// System.out.println(file);
}
// End of Javadoc example
diff --git a/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTestCase.java b/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTestCase.java
index 0e5ab12..6c2822b 100644
--- a/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTestCase.java
+++ b/src/test/java/org/apache/commons/io/filefilter/RegexFileFilterTestCase.java
@@ -51,15 +51,15 @@ public class RegexFileFilterTestCase {
// Note. This only tests the (Path, Path) version if the parent of
// the Path passed in is not null
final FileVisitResult expectedFileVisitResult = AbstractFileFilter.toFileVisitResult(expected);
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for " + path);
if (path != null && path.getParent() != null) {
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for "
+ path);
} else if (path == null) {
- assertEquals(expectedFileVisitResult, filter.accept(path),
+ assertEquals(expectedFileVisitResult, filter.accept(path, null),
"Filter(Path, Path) " + filter.getClass().getName() + " not " + expectedFileVisitResult + " for null");
}
}