FilenameFilter 如何一次扫描获取两个列表?
时间: 2024-03-27 17:39:45 浏览: 44
FilenameFilter的用法
`FilenameFilter` 接口是用于过滤文件名的,它只能返回一个符合条件的文件名列表。如果需要一次扫描获取两个列表,可以使用 `File` 类中的 `listFiles()` 方法来获取符合条件的所有文件和目录,然后根据需要对其分类。
例如,可以先定义两个 `ArrayList` 对象,一个用于存放符合条件的文件,一个用于存放符合条件的目录,然后遍历 `listFiles()` 返回的 `File` 数组,对每个元素进行判断,如果是文件,则添加到文件列表中,如果是目录,则添加到目录列表中。
示例代码如下:
```
File dir = new File("需要扫描的目录路径");
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// 根据需要自定义过滤条件
return name.endsWith(".txt");
}
});
List<File> fileList = new ArrayList<>();
List<File> dirList = new ArrayList<>();
for (File file : files) {
if (file.isFile()) {
fileList.add(file);
} else if (file.isDirectory()) {
dirList.add(file);
}
}
```
上述代码中,`listFiles()` 方法根据传入的 `FilenameFilter` 对象返回符合条件的所有文件和目录的数组。然后遍历这个数组,对每个元素进行判断,将符合条件的文件添加到 `fileList` 中,符合条件的目录添加到 `dirList` 中,最终得到两个列表。
阅读全文