Каков наилучший способ найти файлы, используя Java 8? - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу читать файлы из каталога

, который все начинается с (Пример: как у нас есть список стартов с именами)

  • начинается с "abcd_"
  • начинается с "Прото _"
  • начинается с "foo _"
  • начинается с "2020"
  • начинается с ....

    Другое условие заканчивается с " .txt "

Теперь рассмотрим сценарий, в котором в целевом каталоге у нас есть тысячи файлов.

Так каков эффективный способ сопоставления всех файлов с указанными условия.

** Примечание: Startswith - это динамический список c, а целевой каталог загружается большим количеством файлов каждый день, но в MAX будет только один и только один соответствующий файл, даже если увеличивается число файлов **

Я написал прототип

Map<String,String> getFilesMap(Path path)    
{
Map<String, String> fatchedFileMap = new HashMap<>();

    List<String> fileNamePrefixes = getFileNamePrefixes();

   //Using File Filter implementation
    path.toFile().listFiles( (dir, fileName) -> {

        for (String fileNamePrefix : fileNamePrefixes) {
            if (fileName.endsWith (".txt") && fileName.startsWith(fileNamePrefix)))
             {
                fatchedFileMap.put(fileNamePrefix, fileName);
                return true;//does nothing 
            }
        }
        return false;//does nothing 
    });

    return fatchedFileMap;
}

Это дает мне все файлы, имена которых соответствуют префиксам (предоставленный список)

Но в поисках более лучших способов, если таковые имеются.

Я не хочу инт Можно запускать любые сторонние библиотеки, но все равно добро пожаловать во все решения.

1 Ответ

0 голосов
/ 13 апреля 2020

Я бы порекомендовал вам использовать publi c String [] список (фильтр FilenameFilter) или publi c File [] listFiles (фильтр FileFilter) в зависимости от вашего требование.

...