java filenamefilter
时间: 2023-04-27 22:02:47 浏览: 101
Java中的FilenameFilter是一个接口,用于过滤文件名。它只有一个方法:boolean accept(File dir, String name),用于测试指定文件是否应该包含在某个文件列表中。其中,dir是包含文件的目录,name是文件名。如果该文件应该包含在列表中,则返回true,否则返回false。
相关问题
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`的文件名。
不兼容的类型: <匿名java.io.FilenameFilter>无法转换为javax.swing.filechooser.FileFilter
这个错误提示是由于你试图将一个匿名的`java.io.FilenameFilter`类型转换为`javax.swing.filechooser.FileFilter`类型,这两种类型是不兼容的。`java.io.FilenameFilter`是用于过滤文件名的接口,而`javax.swing.filechooser.FileFilter`是用于过滤文件的接口。如果你想要在文件选择器中使用过滤器,应该使用`javax.swing.filechooser.FileFilter`接口,并实现它的`accept(File f)`和`getDescription()`方法。你可以创建一个新的类来实现该接口,或者使用一个已有的类来实现该接口。
阅读全文