假设一个`TextFileFilter`类实现了`java.io.FilenameFilter`接口,其`accept`方法如下定义:`public boolean accept(File dir, String name) { if (dir != null && name.endsWith(".txt")) return true; return false; }`。现有目录 `/data/logs` 中包含 `app.log`、`data.txt` 和子目录 `archive`,其中 `archive` 目录包含 `old.txt`。使用`File`类和`TextFileFilter`对 `/data/logs` 目录进行过滤操作,以下哪项关于过滤结果的描述是准确的?
答案解析
选项 A 正确,`FilenameFilter` 的 `accept` 方法只接收当前目录下的文件名(不包括路径),`File` 的 `listFiles(FilenameFilter filter)` 方法只返回当前目录(这里是`/data/logs`)下符合条件的文件。选项 B 错误,`FilenameFilter` 并不会递归遍历子目录。选项 C 错误,`listFiles(FilenameFilter filter)` 返回的是 `File` 对象,其中包含了文件的绝对路径或相对路径信息,而不是只有文件名。选项 D 错误,虽然`File`类的`listFiles(FilenameFilter filter)`方法只对当前目录进行过滤,不会深入子目录,但是它会返回符合条件的文件,所以不应排除 `/data/logs/data.txt`。
正确答案:A