java中怎么检索指定路径下包含特定字符的所有字文件夹和文件

java中如何检索指定路径下包含特定字符的所有字文件夹和文件
public class FileFileterByContains {
  public void listAll(File dir) {
 System.out.println("dir:"+dir.getAbsolutePath());
 File[] files = dir.listFiles(new FilenameFilter(){
         public boolean accept(File file,String filename){
            return filename.contains("test");
         }
     }); 
 for (int i = 0;i < files.length;i++) {
 if (files[i].isDirectory()) {
 listAll(files[i]); 
}
 else
  System.out.println("file:"+files[i].getAbsolutePath());  
   }
 }
public static void main(String[] args) {
 File file = new File("D:\\haha");
 FileFileterByContains f =new FileFileterByContains();
 f.listAll(file);
}
 


}
现在有一个问题,有一个不包含特定字符的子文件夹,它里面有一个包含特定字符的文件,这个文件无法被检索出。求高手指点!
------解决思路----------------------
你可以自己写个递归遍历来判断嘛,就是一个一个的检查