我需要按扩展名类型和忽略大小写模式在目录和子目录中查找文件,这是我的代码:
String[] patron = {"doc", "xls", "ppt"};
Iterator iter = FileUtils.iterateFiles(new File(directories), patron, true);
我还需要返回扩展名的文件,例如文档,文档,... 忽略大小写
使用该方法的其他版本并传递您自己的过滤器:
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
的用法。
您必须在以下位置参阅 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(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
在此,您必须传递一个 IOFileFilter 对象,您可以实现给定的接受方法定义
boolean accept(File dir, String name)
IOFileFilter 的文档可在 http://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/filefilter/IOFileFilter.html
我实际上想评论@AurA的答案,但我不允许这样做,因为它说"你必须有 50 个声誉才能评论"。
listFiles(File, String[], boolean)
区分大小写,因此它不会"返回文件,而不考虑 doc 或 DOc 或 dOC"。