修改文件过滤器
Modify filefilter
下面的代码为我提供了以“-path.mp4”结尾的目录中文件的文件路径。但我需要获取不以“-path.mp4”结尾的目录中文件的文件路径-path.mp4".
List<String> results = new ArrayList<String>();
File directory = new File(path);
FileFilter fileFilter = new WildcardFileFilter("*-path.mp4");
File[] files = directory.listFiles(fileFilter);
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.compare(f2.lastModified(), f1.lastModified());
}
});
for (File file : files) {
if (file.isFile()) {
results.add(file.getName());
}
}
return results;
您可以轻松地编写自己的 FileFilter
,而不是试图让 WildcardFileFilter
做一些它不应该做的事情,即 include 与通配符匹配的文件 ...
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname)
{
return ! pathname.getPath().endsWith("-path.mp4");
}
};
这对您的问题非常具体,但您可以看到它可以通过在 File
不 匹配正则表达式时返回 true 来概括。
事实上,您可以扩展并覆盖 Apache 的 WildcardFileFilter — 基本思想是:
public class WildcardExclusionFilter extends WildcardFileFilter implements FileFilter
{
public WildcardExclusionFilter(String glob)
{
super(glob);
}
@Override
public boolean accept(File file)
{
// Return the Opposite of what the wildcard file filter returns,
// to *exclude* matching files and *include* anything else.
return ! super.accept(file);
}
}
您可能希望包含更多可能的 WildcardFileFilter 构造函数,并重写其 accept 方法的其他形式,accept(File dir, String name)
。
下面的代码为我提供了以“-path.mp4”结尾的目录中文件的文件路径。但我需要获取不以“-path.mp4”结尾的目录中文件的文件路径-path.mp4".
List<String> results = new ArrayList<String>();
File directory = new File(path);
FileFilter fileFilter = new WildcardFileFilter("*-path.mp4");
File[] files = directory.listFiles(fileFilter);
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.compare(f2.lastModified(), f1.lastModified());
}
});
for (File file : files) {
if (file.isFile()) {
results.add(file.getName());
}
}
return results;
您可以轻松地编写自己的 FileFilter
,而不是试图让 WildcardFileFilter
做一些它不应该做的事情,即 include 与通配符匹配的文件 ...
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname)
{
return ! pathname.getPath().endsWith("-path.mp4");
}
};
这对您的问题非常具体,但您可以看到它可以通过在 File
不 匹配正则表达式时返回 true 来概括。
事实上,您可以扩展并覆盖 Apache 的 WildcardFileFilter — 基本思想是:
public class WildcardExclusionFilter extends WildcardFileFilter implements FileFilter
{
public WildcardExclusionFilter(String glob)
{
super(glob);
}
@Override
public boolean accept(File file)
{
// Return the Opposite of what the wildcard file filter returns,
// to *exclude* matching files and *include* anything else.
return ! super.accept(file);
}
}
您可能希望包含更多可能的 WildcardFileFilter 构造函数,并重写其 accept 方法的其他形式,accept(File dir, String name)
。