java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
时间: 2023-11-27 16:50:20 浏览: 91
JAVA文件打开关闭操作
5星 · 资源好评率100%
Java中的文件过滤器接口主要有两种:`FileFilter`和`FilenameFilter`。它们都可以用于过滤文件,让我们只获取需要的文件。
`FileFilter`过滤器接口定义了一个用于判断文件是否符合要求的方法`accept(File pathname)`,该方法返回一个布尔值,符合要求的文件返回`true`,否则返回`false`。下面是一个简单的实现示例:
```java
import java.io.File;
import java.io.FileFilter;
public class MyFileFilter implements FileFilter {
private String ext;
public MyFileFilter(String ext) {
this.ext = ext;
}
@Override
public boolean accept(File file) {
if (file.isFile() && file.getName().endsWith(ext)) {
return true;
}
return false;
}
}
```
上面的代码实现了一个过滤器,只保留指定扩展名的文件。使用方法如下:
```java
public static void main(String[] args) {
File dir = new File("C:/mydir");
FileFilter filter = new MyFileFilter(".txt");
File[] files = dir.listFiles(filter);
for (File f : files) {
System.out.println(f.getName());
}
}
```
上面的代码将输出`C:/mydir`目录下所有扩展名为`.txt`的文件名。
`FilenameFilter`过滤器接口也定义了一个用于判断文件是否符合要求的方法`accept(File dir, String name)`,该方法返回一个布尔值,符合要求的文件返回`true`,否则返回`false`。下面是一个简单的实现示例:
```java
import java.io.File;
import java.io.FilenameFilter;
public class MyFilenameFilter implements FilenameFilter {
private String ext;
public MyFilenameFilter(String ext) {
this.ext = ext;
}
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(ext)) {
return true;
}
return false;
}
}
```
使用方法与`FileFilter`类似,只是需要把过滤器传递给`File`类的`list()`或`listFiles()`方法,如下所示:
```java
public static void main(String[] args) {
File dir = new File("C:/mydir");
FilenameFilter filter = new MyFilenameFilter(".txt");
String[] files = dir.list(filter);
for (String name : files) {
System.out.println(name);
}
}
```
上面的代码将输出`C:/mydir`目录下所有扩展名为`.txt`的文件名。
阅读全文