2013-09-11 3 views
2

Мне нужно найти файлы в каталогах и подкаталогах по типу расширения и режима IgnoreCase, это мой код:FileUtils.iterateFiles IGNORECASE

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

мне также нужно возвращать файлы с расширением, как Doc, Doc, ... IGNORECASE

ответ

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"}. Если этот параметр равен нулю, то все файлы returned.recursive - если верно все подкаталоги ищутся, а

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

Else есть еще одно определение дано, где вы можете применить фильтры.

Вы можете использовать это определение для 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

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.

+0

Большое спасибо, также добавьте строку в рекурсивный поиск: IOFileFilter filter = new SuffixFileFilter (покровитель, IOCase.INSENSITIVE); Iterator iter = FileUtils.iterateFiles (новый файл (Directorio), фильтр, DirectoryFileFilter.DIRECTORY); – user2671914

+0

Моя ошибка, последний параметр должен быть фильтром каталога. Я обновил код, спасибо. –

+0

@ user2671914 Примите решение, если оно решит проблему. –