我有一个Iterator应该由FileUtils.iterateFiles()函数填充,使用IOFileFilter实例来排序并返回与标题“sound”匹配的文件的迭代器。
问题是,即使我可以看到IOFileFilter中的accept(文件文件)覆盖返回true(通过断点),当我查询iterator.hasNext()时,我得到false,并且debug显示迭代器为空。有人可以发现任何可能的原因吗?或者Iterators和IOFileFiltters的行为方式与我认为的不相符?
以下代码。
private IOFileFilter findSoundsDir = new IOFileFilter()
{
@Override
public boolean accept(File file) {
return file.getName().equals("sounds"); //Breakpoint here gets hit
}
@Override
public boolean accept(File file, String s) {
return s.equals("sounds");
}
};
public void generateSoundEmbeds(String baseDir)
{
File searchingDir = new File(baseDir).getParentFile().getParentFile();
System.out.println("searchingDir: " + searchingDir.getAbsolutePath());
Iterator<File> soundsIterator = (Iterator<File>)FileUtils.iterateFiles(searchingDir, findSoundsDir ,TrueFileFilter.INSTANCE);
if(soundsIterator.hasNext()) //however this check returns false, despite IOFileFilter returning true at least once previously
{
//we never get here
}else{
System.out.println("found no file");
}
}