在实际的开发工作中,其实我更倾向于使用 Guava 的 BiMap,而不是 Hutool 的。这里提一下,主要是我发现了 Hutool 在线文档上的一处错误,提了个 issue(从中可以看出我一颗一丝不苟的心和一双清澈明亮的大眼睛啊)。
13、图片工具Hutool 封装的 ImgUtil 可以对图片进行缩放、裁剪、转为黑白、加水印等操作。
缩放图片:
ImgUtil.scale(FileUtil.file("hutool/wangsan.jpg"),
FileUtil.file("hutool/wangsan_small.jpg"),
0.5f
);
裁剪图片:
ImgUtil.cut(FileUtil.file("hutool/wangsan.jpg"),
FileUtil.file("hutool/wangsan_cut.jpg"),
new Rectangle(200, 200, 100, 100)
);
添加水印:
ImgUtil.pressText(//FileUtil.file("hutool/wangsan.jpg"),
FileUtil.file("hutool/wangsan_logo.jpg"),
"沉默王二", Color.WHITE,
new Font("黑体", Font.BOLD, 100),
0,
0,
0.8f
);
趁机让大家欣赏一下二哥帅气的真容。
14、配置文件众所周知,Java 中广泛应用的配置文件 Properties 存在一个特别大的诟病:不支持中文。每次使用时,如果想存放中文字符,就必须借助 IDE 相关插件才能转为 Unicode 符号,而这种反人类的符号在命令行下根本没法看。
于是,Hutool 的 Setting 运用而生。Setting 除了兼容 Properties 文件格式外,还提供了一些特有功能,这些功能包括:
各种编码方式支持
变量支持
分组支持
先整个配置文件 example.setting,内容如下:
name=沉默王二age=18
再来读取和更新配置文件:
/*** @author 微信搜「沉默王二」,回复关键字 PDF
*/
public class SettingDemo {
private final static String SETTING = "hutool/example.setting";
public static void main(String[] args) {
// 初始化 Setting
Setting setting = new Setting(SETTING);
// 读取
setting.getStr("name", "沉默王二");
// 在配置文件变更时自动加载
setting.autoLoad(true);
// 通过代码方式增加键值对
setting.set("birthday", "2020年09月29日");
setting.store(SETTING);
}
}
15、日志工厂
Hutool 封装的日志工厂 LogFactory 兼容了各大日志框架,使用起来也非常简便。
/*** @author 微信搜「沉默王二」,回复关键字 PDF
*/
public class LogDemo {
private static final Log log = LogFactory.get();
public static void main(String[] args) {
log.debug("难得糊涂");
}
}
先通过 LogFactory.get() 自动识别引入的日志框架,从而创建对应日志框架的门面 Log 对象,然后调用 debug()、info() 等方法输出日志。
如果不想创建 Log 对象的话,可以使用 StaticLog,顾名思义,一个提供了静态方法的日志类。
StaticLog.info("爽啊 {}.", "沉默王二的文章");16、缓存工具
CacheUtil 是 Hutool 封装的创建缓存的快捷工具类,可以创建不同的缓存对象:
FIFOCache:先入先出,元素不停的加入缓存直到缓存满为止,当缓存满时,清理过期缓存对象,清理后依旧满则删除先入的缓存。
Cache<String, String> fifoCache = CacheUtil.newFIFOCache(3);fifoCache.put("key1", "沉默王一");
fifoCache.put("key2", "沉默王二");
fifoCache.put("key3", "沉默王三");
fifoCache.put("key4", "沉默王四");
// 大小为 3,所以 key3 放入后 key1 被清除
String value1 = fifoCache.get("key1");