JAVA IO 流中的 FilenameFilter 接口用来过滤文件名,就是说可以从指定目录中选出符合一定条件的文件,这个条件就在实现了 FilenameFilter 接口的类中设置。具体实现见下例:
在例子中的目录中多放几个文件,然后看输出结果。
Test.java
===================================================================================
package com.test;
import java.io.*;
public class Test {
public static void main(String args[]) {
File dir = new File("E:/wp/Test/src/com/test");
String file[] = dir.list(new MyFilter(".java"));
for (int i=file.length; i>0; i--) {
System.out.println(file[i-1]);
}
}
}
class MyFilter implements FilenameFilter {
String name;
MyFilter(String name) {
this.name = name;
}
public boolean accept(File dir, String name) {
System.out.println("accept()");
return name.endsWith(this.name);
}
}
===================================================================================
FilenameFilter 接口中只定义了一个方法, public boolean accept(File dir, String name),根据字面的意思理解,dir 显然是想要查询的目录,name 则是 dir 中的文件名。 accept 方法里指定了文件名要满足的条件,上面的例子中条件为扩展名为 .java 的文件。可能第一次接触这个接口的人会奇怪,并没有看到调用 accept 方法,但是结果却说明确实调用了 accept 方法,下面来看一下 File 类的 list 方法的源代码。
===================================================================================
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}
===================================================================================
File 类里面重载了 list 方法。一个是没参数的,另一个只有一个 FilenameFilter 参数。这个 list 方法先把指定目录(调用 list 方法的 File 对象就是一个目录)中的所有文件名放到 names 数组中,然后用一个循环挨个检查。最后返回一个 String[] 。
分享到:
相关推荐
通过上述示例,我们可以看到如何利用Java的`FilenameFilter`接口来创建自定义的文件名过滤器,并使用这些过滤器来高效地筛选出符合特定条件的文件。这对于处理大量文件时尤其有用,可以帮助我们更快地找到需要处理的...
总结来说,`FilenameFilter`接口是Java提供的一种机制,用于定制文件名的筛选规则,帮助我们在遍历目录时高效地找到特定类型的文件。它通过实现简单的一接口并提供自定义的过滤逻辑,使得在处理文件系统操作时具有更...
`FileFilter`接口允许自定义过滤规则,而`FilenameFilter`则用于过滤文件名。你可以实现这些接口中的`accept(File dir, String name)`方法,返回`true`表示接受该文件,`false`则拒绝。例如,以下代码展示了如何创建...
在Java编程中,`FilenameFilter` 是一个接口,它用于过滤文件名,允许我们根据特定的文件扩展名或模式选择性地列出目录中的文件。在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 ...
在Java编程中,过滤器(Filter)是一种设计模式,它允许我们按照特定条件对数据进行筛选或修改。在处理文件时,我们可以利用过滤器来选取符合特定格式的文件,例如只选择`.txt`文本文件而忽略其他类型的文件,或者...
FilenameFilter 接口是 Java.io 包中的一个接口,用于过滤文件名。它只有一个抽象方法 accept(File dir, String name),该方法返回一个布尔值,表示是否接受该文件名。FilenameFilter 接口可以实现文件名的过滤、...
3. **文件过滤器**:`FileFilter`是`java.io.FilenameFilter`的接口,用于定义文件名筛选规则。我们可以实现自定义的`FileFilter`,例如检查文件扩展名是否为`.mp3`。下面是一个简单的示例: ```java FileFilter ...
Java也提供了一些预定义的文件过滤器,如`FilenameFilter`,它和`FileFilter`类似,但只能用于文件名而不是完整的文件对象。此外,`java.nio.file.Files`类提供了更现代且功能强大的方式来遍历文件系统,包括`Files....
FilenameFilter是一个文件名过滤器,它可以根据文件名的规则来过滤文件。 FilenameFilter的accept方法将被传递两个参数:File dir和String name。其中,File dir是指文件所在的目录,而String name是文件名。accept...
这个例子展示了如何使用`FilenameFilter`接口来过滤出特定名字的文件。 通过以上知识点,你可以构建一个有效的Java程序,根据文件名称查询文件的出处。在实际开发中,应根据具体需求调整策略,如搜索速度、资源...
本文将分享一个简单的Java程序,用于根据文件的后辍名过滤文件列表。这个程序分为两个主要部分:`FileNameFilter` 类和 `FileNameFilterDemo` 类。 首先,我们来看 `FileNameFilter` 类,它包含一个名为 `filter` ...
`FilenameFilter`接口用于过滤文件名,正确实现应返回一个布尔值,因此选项B正确: ```java public class JavaFilter implements FilenameFilter { public boolean accept(File dir, String name) { return name...
例如,在`DirList2`示例中,通过创建一个匿名内部类实现FilenameFilter接口,根据传入的字符串过滤文件名。 #### 示例代码解析 在提供的部分内容中,有一个名为`DirList2`的示例类,其主要功能是列出指定目录下的...
本文将详细介绍如何在Python中过滤这些非法字符,确保创建的文件名符合Windows系统的规范。 首先,让我们了解一下Windows系统中不允许出现在文件名中的非法字符。这些字符包括:`/`、`\`、`:`、`*`、`?`、`"`、`、`...
- **FilenameFilter 接口**: 用于过滤文件名。该接口定义了一个 `accept(File dir, String name)` 方法,接受一个 `File` 对象和一个字符串参数,用于判断是否应该包含该文件名。通常情况下,该接口会被实现为匿名...
FilenameFilter接口是Java IO包中用于过滤文件的接口,该接口提供了accept方法,该方法将File对象和文件名作为参数,并返回一个布尔值,表示当前文件是否满足过滤条件。 二、FilenameFilter接口的使用 在上面的...
3. **FilenameFilter**:这是一个接口,它定义了一个方法`accept(File dir, String name)`,用于过滤文件名。在图片浏览器中,我们可以实现这个接口,设置一个过滤器只允许特定类型的图片文件(如.jpg, .png, .gif)...
总的来说,实现图片过滤功能涉及到文件I/O操作,文件名解析,以及对特定文件格式的理解。在这个例子中,`ImageFilter`类提供了一种简洁有效的方法来实现这个功能,而`ImageFilterTest`类则展示了如何在实际场景中...
- **使用`FilenameFilter`筛选URL文件**:`FilenameFilter`接口用于过滤文件列表,只保留扩展名为.url的文件。通过实现`FilenameFilter.accept()`方法,可以精确控制哪些文件将被处理。 ```java FilenameFilter ...