FileFilter filter=new FileFilter()
时间: 2024-01-09 21:47:35 浏览: 20
这是Java语言中的一个接口定义,用于过滤文件。FileFilter接口只有一个方法:boolean accept(File pathname),用于测试指定文件是否应该包含在某个文件列表中。实现该接口的类可以作为参数传递给File类的listFiles(FileFilter filter)方法,以便获取符合条件的文件列表。例如,我们可以实现一个FileFilter接口的匿名类,来过滤指定目录下的所有txt文件:
```
File directory = new File("path/to/directory");
File[] txtFiles = directory.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isFile() && file.getName().endsWith(".txt");
}
});
```
上面代码中,我们通过实现FileFilter接口的accept方法,过滤出了指定目录下的所有txt文件,并将结果保存在txtFiles数组中。
相关问题
'javax.swing.JFileChooser' 中的 'setFileFilter(javax.swing.filechooser.FileFilter)' 无法应用于 '(anonymous java.io.FileFilter)'
这是因为 'setFileFilter' 方法需要一个 'javax.swing.filechooser.FileFilter' 类型的参数,但是您传递了一个匿名的 'java.io.FileFilter' 类型的参数。这两个类虽然名称相似,但它们是不同的类。
您可以通过创建一个 'javax.swing.filechooser.FileFilter' 的实例来解决这个问题。例如:
```
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
// your implementation of accept method
}
public String getDescription() {
// your implementation of getDescription method
}
};
JFileChooser chooser = new JFileChooser();
chooser.setFileFilter(filter);
```
这样就可以将 'filter' 对象作为参数传递给 'setFileFilter' 方法了。
java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
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`的文件名。