2

我需要按扩展类型和忽略大小写模式在目录和子目录中查找文件,这是我的代码:

String[] patron = {"doc", "xls", "ppt"};
Iterator iter =  FileUtils.iterateFiles(new File(directories), patron, true);

我还需要返回带有 Doc、Doc、...等扩展名的文件

4

3 回答 3

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.

于 2013-09-11T10:42:27.157 回答
0

您必须在http://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/FileUtils.html参考 FileUtils 的文档

您正在使用的定义

public static Iterator iterateFiles(File directory,
                                    String[] extensions,
                                    boolean recursive)

允许对与扩展名数组匹配的给定目录(以及可选的子目录)中的文件进行迭代。此方法基于 listFiles(File, String[], boolean)。

extensions - 扩展数组,例如。{"java","xml"}。如果此参数为空,则返回所有文件。递归 - 如果为真,则搜索所有子目录

it should return files irrespective of doc or DOc or dOC they are all same.

否则,您可以在其中应用过滤器,还给出了另一种定义。

您可以将此定义用于 iterateFiles

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找到

于 2013-09-11T10:31:25.303 回答
0

我实际上想对@AurA 的回答发表评论,但我不允许这样做,因为它说“你必须有 50 名声望才能发表评论”。

listFiles(File, String[], boolean)

区分大小写,因此它不会“无论 doc 或 DOc 还是 dOC 都返回文件”。

于 2021-04-20T14:53:02.960 回答