有一个`TextFileFilter`类,它实现了`java.io.FilenameFilter`接口,其`accept`方法为:`public boolean accept(File dir, String name) { return name.endsWith(".txt");}`。现有两个目录 `/project/root` 和 `/project/other`,均包含 `file1.txt` 和 `file2.log`。分别使用`File`类的`listFiles(FilenameFilter filter)`方法对这两个目录进行过滤,然后将返回的`File`对象数组长度分别记为`length1`和`length2`。以下关于`length1`和`length2`之间关系的描述,哪一项是正确的?
答案解析
选项 A 错误,由于每个目录都包含一个`.txt`文件(file1.txt),因此,过滤后,每个目录都会返回一个包含一个`File`对象的数组,所以`length1`和`length2`都应该等于1,而不是1。选项 B 错误,每个目录包含两个文件,其中只有一个是txt文件。 选项 C 错误,`FilenameFilter` 的 `accept` 方法的返回值仅取决于文件名是否以 `.txt` 结尾,与系统或平台无关,每个目录下有且仅有一个符合条件的文件。选项 D 正确,因为 `accept` 方法只判断文件名是否以 `.txt` 结尾,且两个目录都包含唯一一个以 `.txt` 结尾的文件,所以过滤后的结果数组长度都为1,并且都等于该目录下.txt文件数量,这里为1。
正确答案:D