Инструменты под рукой - несколько удобных Java библиотек.
Одним из следствий популярности Java является несметное количество библиотек для этого языка, на все случаи жизни. Ввод/вывод, работа с файловыми архивами, парсеры различных форматов данных и прочее. Java - язык созданный для программистов, ориентированный в том числе на скорость разработки. Множество доступных библиотек делают разработку еще более быстрой. Кроме того, во многих случаях это снижает вероятность появления типичных ошибок в коде. Хочу привести четыре Java библиотеки, которые хорошо зарекомендавали себя на практике, которые мне приходилось использовать чаще всего при работе с Java SE и которые мне понравились больше всего. Само собой - вы можете найти еще множество хороших библиотек, которые подходят именно вам, а возможно - заменяют приведенные библиотеки.
Apache Commons IO
Сайт: http://commons.apache.org/proper/commons-io/
Проект Apache Commons включает в себя очень много составляющих и Commons IO - лишь малая часть. С одной стороны - это настолько популярная библиотека, что наверное не нуждается в представлении. Но с другой - ее просто нельзя не упомянуть! Apache Commons IO, как можно догадаться по названию, служит для задач ввода/вывода. Широко и давно используется в мире Java, а значит - хорошо отлажена.
Посмотрим на пару элементарных примеров c классами IOUtils и FileUtils.
Класс IOUtils служит для работы с классами InputStream, OutputStream, Reader и Writer. Класс FileUtils служит для работы с классом java.io.File. Для того чтобы считать текст из файла с заданной кодировкой UTF-8, нужно написать примерно следующее:
public String readTextFromFile(String path) throws Exception { final String ENCODING = "UTF-8"; return FileUtils.readFileToString(new File(path), ENCODING); }
Удалить директорию и все ее содержимое:
public void removeDir(String path) throws Exception { FileUtils.deleteDirectory(new File(path)); }
Считать текст из потока:
private String readString(InputStream is) throws IOException { final String ENCODING = "UTF-8"; StringWriter writer = new StringWriter(); IOUtils.copy(is, writer, ENCODING); return writer.toString(); }
Maven Dependency:
<dependency> <groupId>commons-io</groupId> <artifactId>commons- io</artifactId> <version>2.4</version> </dependency>
Zeroturnaround/zt-zip
Сайт: https://github.com/zeroturnaround/zt-zip
Отличная библиотека для работы с ZIP архивами. С ее помощью можно создать архив или извлечь его содержимое буквально за одну строку кода. Использует возможности пакета java.util.zip.*.
Например, извлечь ZIP архив в директорию с именем, совпадающим с именем файла архива, можно так:
public void unzip(String path) throws Exception { ZipUtil.explode(new File(path)); }
Maven Dependency:
<dependency> <groupId>org.zeroturnaround</groupId> <artifactId>zt- zip</artifactId> <version>1.8</version> <type>jar</type> </dependency>
Jsoup: Java HTML Parser
Сайт: http://jsoup.org/
Невероятно удобная библиотека для работы с HTML. Поддерживает реализованный на данный момент стандарт HTML5, как написано на сайте разработчиков - разбирает HTML так, как это делают современные браузеры. Более того, реализована работа с селекторами по аналогии с селекторами JQuery и CSS. Хорошо документирована, на сайте приведено множество примеров.
Вот так можно получить содержимое элемента div с заданным классом divClass из фрагмента HTML кода allText:
public String getDiv(final String allText, final String divClass){ if (allText == null) return null; try { Document doc = Jsoup.parseBodyFragment(allText); Element body = doc.body(); Element div = body.select("div."+divClass).first(); String text = div.html(); return text != null && !text.isEmpty() ? text : allText; } catch (Exception e){ System.err.println ("Error while parsing HTML : " + e.getMessage()); } return allText; }
Maven Dependency:
<dependency> <!-- jsoup HTML parser library @ http://jsoup.org/ --> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.3</version> </dependency>
Thumbnailator
Сайт: https://code.google.com/p/thumbnailator/
Предназначена для создания миниатюр изображений. Когда мне было необходимо создать миниатюры изображений с помощью Java - я пробовал несколько вариантов, и эта библиотека на мой взгляд является одной из лучших. Как по удобству работы, так и по качеству создаваемых миниатюр изображений. Возьму пример, приведенный на сайте проекта, который показывает, насколько просто выглядит создание миниатюр сразу нескольких изображений:
Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat ("jpg") .toFiles(Rename.PREFIX_DOT_THUMBNAIL);
Maven Dependency:
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>[0.4, 0.5)</version> </dependency>
Теги: java programming
comments powered by Disqus