То, что я здесь спрашиваю, должно быть довольно распространенным, но я намерен найти наилучший из возможных способов сделать это.
- У меня есть список файлов (скажем, n) в каталоге - все из которых имеют
были классифицированы по расширениям.
- У меня есть CSV-файл, содержащий шаблоны Regex (скажем, m), который я хочу найти во всех этих файлах определенного типа.
- Я хочу получить окончательный вывод, в котором у меня есть шаблон Regex, имя файла,
строка и номер строки в списке.
Вот несколько вопросов о том, как мне к этому подойти:
- Есть ли способ избежать м * п операций?
- Что быстрее - чтение файлов, буферизация содержимого и сохранение каждой строки, скажем, в массиве, перед поиском всех выражений регулярного выражения, или я должен взять шаблон регулярного выражения, прочитать файл построчно и выполнить поиск по мере разбора, не используя память?
- Я полагаю, что операции чтения / записи являются наиболее сложными - поэтому я хочу, чтобы чтения 'n + 1' (файлы, csv) и только одна запись выполнялись в самом конце. Верно ли мое предположение и подход?
- Массивы, списки, хеш-карты, что-то еще - какие-либо предложения о том, как лучше всего выполнить задачу? Я думаю, что анализ файлов будет ключом к эффективности?
- Какие-нибудь "необычные" API-интерфейсы Java, которые я могу использовать, значительно сокращают код?
Я ценю любые идеи и помощь по этому вопросу.
.