2011-03-07 62 views
4

我需要擴展文件路徑中的通配符以獲取與文件路徑匹配的文件列表。
我用的commons-io的Apache的:Java通配符擴展

protected File[] wildcardResolution(File f) { 
    File dir = f.getParentFile(); 
    FileFilter fileFilter = new WildcardFileFilter(f.getName()); 
    return dir.listFiles(fileFilter); 
} 

的問題是,它只是擴展或*通配符?但不**通配符,所以: /usr/**/*.xml不匹配all files with extension .xml, in any subfolder of /usr

如何才能讓**通配符擴展正常工作?

謝謝

回答

3

的問題File.listFiles是,它不遞歸列出。可以使用FileUtils.iterateFiles or listFiles。其中使用一個模式的文件和一個模式的目錄。這與globbing表達式不完全相同:

Iterator iterateFiles = FileUtils.iterateFiles(
    new File("."), new WildcardFileFilter("*.xml"), TrueFileFilter.INSTANCE); 
while(iterateFiles.hasNext()){ 
    System.out.println(iterateFiles.next()); 
}