воскресенье, 19 июля 2009 г.

apache commons io

Мой наивный пост на тему полезности commons.io

Раньше мне приходилось писать много утилит для работы с файлами. В основном - поиск и замена определенных строк в определенных файлах. Я даже свою собственную библиотечку написал и юзал во всех таких утилитных проектах.

Все удивлялся, почему в jdk не входит удобный и простой метод для перебора файлов и работы со строками. И вот как-то читая juick наткнулся на запись ~ "я открыл для себя commons.io, рулез!". И тоже для себя ее открыл :-D

Оказалось, что эта библиотека сократила код всех моих утилит раза в 3! Использовать и изучить ее очень просто! Хоть я и не пользуюсь всеми фишками, хочу о двух из них, для примера, рассказать.


Пример:
Задача #1:
Нам требуется найти все файлы, содержащие строку "hello world" и сохранить список этих файлов.

Решение:
Надо просто написать класс, назовем его "HelloWorldWalker" и унаследовать его от абстрактного класса DirectoryWalker. Переопределяем в нем метод handleFile, в котором "принимаем" только файлы, содержащие искомую строку. Все очень просто.
Использовать его еще проще!
List labelInFiles = new HelloWorldWalker(startDir).findLabelInFiles();

Задача #2:
Надо считать все строки из файла

Решение:
List stringsList = FileUtils.readLines(file);
Проще некуда!

P.S. Похоже commons.io не поддерживает дженерики из java 5, очень жаль
P.P.S. пост just for fun

Комментариев нет: