为什么我的迭代器是空的?

时间:2015-03-24 23:12:41

标签: java

我有一个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");
    }
}

0 个答案:

没有答案