我需要按扩展名和ignorecase模式在目录和子目录中查找文件,这是我的代码:
String[] patron = {"doc", "xls", "ppt"};
Iterator iter = FileUtils.iterateFiles(new File(directories), patron, true);
我还需要返回扩展名为Doc,Doc,... ignorecase
的文件答案 0 :(得分:4)
使用方法的其他版本并传递您自己的过滤器:
String[] extensions = new String[] {"doc", "xls", "ppt"};
IOFileFilter filter = new SuffixFileFilter(extensions, IOCase.INSENSITIVE);
Iterator iter = FileUtils.iterateFiles(new File(directorio), filter, DirectoryFileFilter.DIRECTORY);
请注意使用IOCase.INSENSITIVE
。
答案 1 :(得分:0)
您必须参考FileUtils的文档 http://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/FileUtils.html
您正在使用的定义
public static Iterator iterateFiles(File directory,
String[] extensions,
boolean recursive)
允许迭代与扩展数组匹配的给定目录(以及可选的子目录)中的文件。此方法基于listFiles(File,String [],boolean)。
扩展程序 - 一系列扩展程序,例如{的 “java”, “XML”}。如果此参数为null,则返回所有文件.recursive - 如果为true,则还搜索所有子目录
it should return files irrespective of doc or DOc or dOC they are all same.
另外还有一个定义,您可以应用过滤器。
您可以将此定义用于iterateFiles
iterateFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
在这里你必须传递一个IOFileFilter对象,你可以实现给定的accept方法定义
boolean accept(File dir, String name)
找到IOFileFilter的文档
答案 2 :(得分:0)
我实际上想对@AurA 的回答发表评论,但我不被允许,因为它说“你必须有 50 个声望才能发表评论”。
listFiles(File, String[], boolean)
区分大小写,因此它不会“不考虑 doc 或 DOc 或 dOC 返回文件”。