编写Java程序,能够列出指定目录下的所有文件,包括子目录下的文件,并使用文件名过滤器来过滤文件。要求: (1)使用File类的list()方法返回该目录下所有文件的文件名,文件名不包含路径信息。 (2)使用File类的listFiles()方法返回该目录下的所有文件的File对象。 (3)FilenameFilter是文件名过滤器接口类,所有自定义的文件名过滤器必须实现该接口的accept()方法。
时间: 2024-03-18 13:40:45 浏览: 60
下面是一个可以列出指定目录下所有文件并使用文件名过滤器来过滤文件的 Java 代码示例:
```java
import java.io.File;
import java.io.FilenameFilter;
public class ListFilesExample {
public static void main(String[] args) {
// 指定要列出的目录
File directory = new File("C:\\Users\\Username\\Desktop\\example");
// 列出所有文件名
String[] fileList = directory.list();
System.out.println("所有文件名:");
for (String file : fileList) {
System.out.println(file);
}
// 列出所有文件对象
File[] fileObjects = directory.listFiles();
System.out.println("\n所有文件对象:");
for (File file : fileObjects) {
System.out.println(file.getAbsolutePath());
}
// 使用文件名过滤器列出所有以 .txt 结尾的文件名
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
};
String[] txtFiles = directory.list(filter);
System.out.println("\n所有 .txt 文件名:");
for (String file : txtFiles) {
System.out.println(file);
}
}
}
```
在上面的代码中,我们首先使用 `list()` 方法列出了指定目录下的所有文件名,然后使用 `listFiles()` 方法列出了指定目录下的所有文件对象。接着,我们使用一个匿名内部类实现了 `FilenameFilter` 接口的 `accept()` 方法来过滤了文件名,只列出了以 `.txt` 结尾的文件名。最后,我们打印了所有满足条件的文件名。
阅读全文